2017-10-02 3 views
0

私は非常にコーディングに新しく、基本的な間違いをお許しください。私はPythonカレンダーモジュールを使用して開始日を生成するこのコードを作業してきました。終了日が必要であることがわかるまでは、すべてうまくいっていました。私は手作業で1を開始日に追加しようとしましたが、出力を印刷したときに、これが月末になったらうまくいかないことがわかりました。 これは私が得る不正な出力です。明らかに、12月には32日間はありません。 開始日は2015-12-31です。 終了日は2015-12-32です。 私はカレンダーモジュールでドキュメントを読んできましたが、これをどうやって取得するかはまだ分かりませんでした。事前にPythonカレンダーモジュールで1日追加する方法

import requests 
import json 
import calendar 

cal = calendar.Calendar() 
for year in range(2015,2016): 
    for month in range(1,13): 
     monthdays = [d for d in cal.itermonthdays(year,month) if d != 0] 
     for day in monthdays: 
      str_year = str(year) 
      if month < 10: 
       str_month = "0" + str(month) 
       # print(str_month) 
      else: 
       str_month = str(month) 
       # print(str_month) 
      if day < 10: 
       str_StartDay = "0" + str(day) 
       int_EndDay = day + 1 
       if int_EndDay < 10: 
        str_EndDay = "0" + str(int_EndDay) 
       else: 
        str_EndDay = str(int_EndDay) 
      else: 
       str_StartDay = str(day) 
       int_EndDay = day + 1 
       str_EndDay = str(int_EndDay) 
       # print(str_day) 
      _STARTDATE = str_year + "-" + str_month + "-" + str_StartDay 
      _ENDDATE = str_year + "-" + str_month + "-" + str_EndDay 
      # print(_DATE) 
      #fun_Phase1(_DATE) 
      print("Start date is " + _STARTDATE) 
      print("End date is " + _ENDDATE) 

感謝を: これは私がこれまで持っているものです。

+0

ホイールを改造しないでください。日付と時刻の計算には 'datetime'を使います。 –

答えて

0

ありがとうKlaus D.あなたは正しい方向に私を指摘しました。私はdatetimeを使ってこの問題を解決しました。ここにコードがあります。うまくいけば、将来の誰かの時間を節約できることを願っています。

import requests 
import json 
import calendar 
import datetime 

cal = calendar.Calendar() 
for year in range(2015,2016): 
    for month in range(1,13): 
     monthdays = [d for d in cal.itermonthdays(year,month) if d != 0] 
     for day in monthdays: 
      str_year = str(year) 
      int_year = int(year) 
      if month < 10: 
       str_month = "0" + str(month) 
       int_month = int(month) 
       # print(str_month) 
      else: 
       str_month = str(month) 
       int_month = int(month) 
       # print(str_month) 
      if day < 10: 
       str_StartDay = "0" + str(day) 
       int_day = int(day) 
      else: 
       str_StartDay = str(day) 
       int_day = int(day) 
       # print(str_day) 
      _MYDATE = datetime.date(int_year,int_month,int_day) 
      str_MYDATE = str(_MYDATE) 
      print(str_MYDATE) 
      _MYDATEPLUSONE = _MYDATE + datetime.timedelta(days=1) 
      str_MYDATEPLUSONE = str(_MYDATEPLUSONE) 
      print(str_MYDATEPLUSONE) 
      print("Start date is " + str_MYDATE) 
      print("End date is " + str_MYDATEPLUSONE) 
関連する問題