1

誰でも正しいコードを書くのを手伝ってくれませんか。("2013-Oct-17", "2100-01-01") など、Microsoft Excel がサポートする日付範囲の日付を含む文字列のタプルを作成しようとしています。

私のコード:

import time
import math


DAYS = ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
FULL_MONTHS = ("January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December")


mm_ = tuple(str(date) for date in range(2013-oct-17, 2100-01-01))
print mm_

実行すると次のエラーが表示されます(出力):

mm_ = tuple(str(date) for date in range(2013-oct-17, 2100-01-01))
TypeError: unsupported operand type(s) for -: 'int' and 'builtin_function_or_method'
4

2 に答える 2

0

さまざまなタイプの日付文字列と組み込みモジュールdatetimeを認識するためのサードパーティ ライブラリdateutilの使用。dateutil を使用したくない場合は、datetime.datetime.strptimeですべての可能な形式を試して、機能するものを使用できます。範囲に終了日を含めたい場合は、削除できます。-timedelta(days=1)

from datetime import timedelta
from dateutil.parser import parse
from dateutil.rrule import rrule, DAILY

dates = tuple(str(dt.date()) for dt in rrule(DAILY, dtstart=parse("2013-oct-17"), until=parse("2100-01-01")-timedelta(days=1)))
print dates

更新: 子犬のジョン・クレメンツがdateutil.rrule.rruleに関するコメントで述べています。それを利用するようにコードを更新しました。彼のおかげで、今ではきちんとした 4 ライナーになっています。

于 2013-10-17T15:42:36.150 に答える