日付文字列をPythonの日時形式に転送したい。文字列は以下のとおりです。
Mon, 26 Dec 2011 20:42:08 +0200
Sat, 24 Dec 2011 16:28:59 +0200
pytz APIを使用せずに文字列をPythonの日時形式に転送するより速い方法はありますか?
>>> import datetime
>>> s = "Mon, 26 Dec 2011 20:42:08 +0200"
>>> t = datetime.datetime.strptime(s, "%a, %d %b %Y %H:%M:%S %z")
>>> t
datetime.datetime(2011, 12, 26, 20, 42, 8, tzinfo=datetime.timezone(datetime.timedelta(0, 7200)))
日時プレースホルダーの完全なリストについては、ドキュメントを参照してください。
Python 2.5+、PyPy、Jython で動作するバリアントを次に示します。
from datetime import datetime, timedelta
from email.utils import mktime_tz, parsedate_tz
s = "Mon, 26 Dec 2011 20:42:08 +0200"
t = parsedate_tz(s)
if t[9] is not None:
utc_offset = timedelta(seconds=t[9]) # local = utc + offset
print("utc offset: %s" % (utc_offset,))
print(repr(datetime.utcfromtimestamp(mktime_tz(t)))) # naive datetime in UTC
utc offset: 2:00:00
datetime.datetime(2011, 12, 26, 18, 42, 8)
これを試して?2016-01-02 の入力を想定し、すべての日付を標準化する必要があります。
def NormalizaData(input):
input = str(input)
num = input.split('-')
year = num[0]
newnum = num[1]
num = newnum.split('-')
month = num[0]
day = '01'
return (year + '-' + month + '-' + day)