I持た1つのdatetimeオブジェクト差し引く2時間モーメント
2016-04-11 19:46:46-04:00
と
2016-04-25 09:35:18.464966
(この1つはdatetime.datetime.now()
ある)
私は同じ形式にそれらを得るにはどうすればよいので、私はそれらを引くことができますか?
I持た1つのdatetimeオブジェクト差し引く2時間モーメント
2016-04-11 19:46:46-04:00
と
2016-04-25 09:35:18.464966
(この1つはdatetime.datetime.now()
ある)
私は同じ形式にそれらを得るにはどうすればよいので、私はそれらを引くことができますか?
dateutil.parser
を使用できます。
from dateutil.parser import *
import datetime
date1="2016-04-11 19:46:46-04:00"
date2=datetime.datetime.now()
updated_date1=parse(date1, ignoretz=True) #Ignoring TimeZone
updated_date2=parse(str(date2))
result=updated_date2 - updated_date1
print result
現在とその後の間にDSTトランジションがあった場合、またはローカルタイムゾーンが異なる場合)。タイムゾーン情報を無視しないでください。 'date1'をutc(' date1.replace(tzinfo = None) - date1.utcoffset() 'に変換し、' .now() 'の代わりに' .utcnow() 'を使って時差を見つけてください。 – jfs
最初の日付文字列にはタイムゾーンがあり、datetime.datetime.now()
にはタイムゾーンがありません。
>>> datetime.datetime.strptime(''.join('2016-04-11 19:46:46-04:00'.rpartition(':')[0::2]), "%Y-%m-%d %H:%M:%S%z")
datetime.datetime(2016, 4, 11, 19, 46, 46, tzinfo=datetime.timezone(datetime.timedelta(-1, 72000)))
:あなたはタイムゾーンオフセットで
:
を持っている場合、あなたは正規表現またはパーティションでそれを削除する必要があり、
>>> d1=datetime.datetime.strptime("2016-04-11 19:46:46-0400", "%Y-%m-%d %H:%M:%S%z")
>>> print(d1)
2016-04-11 19:46:46-04:00
をまたは:
あなたはそうのような最初の文字列を解析することができます
私はPython 3でこれをしました.3.3より前のPythonはのディレクティブをサポートするspottyです。 (Pythonをビルドするために使用されたCライブラリがサポートしている場合のみサポートされています)Python 3.2以降ではネイティブサポートがあります。
タイムゾーンをdatetime.datetime.now()
に追加するか、またはd1
からタイムゾーンを追加する必要があります。
>>> d1.replace(tzinfo=None)
datetime.datetime(2016, 4, 11, 19, 46, 46)
を次にあなたが引くことができます:
>>> d1.replace(tzinfo=None)-datetime.datetime.now()
datetime.timedelta(-14, 42738, 274649)
を使用すると、タイムゾーンの自由な時間に同じタイムゾーンを作りたい場合は、あなたが行うことができます:ここではそれを削除する方法です
>>> d1-datetime.datetime.now().replace(tzinfo=d1.tzinfo)
datetime.timedelta(-14, 41899, 435274)
元の辞書は{{名前}: "日付"、 "値": "月曜日、2014年4月11日19:46:46 -0400"}のようになります
...
この1つは(文字列として指定)指定された時間からの経過秒を見つけるにはdatetime.datetime.now()
です:
import time
from email.utils import parsedate_tz, mktime_tz
d = {"name": "Date", "value": "Mon, 11 Apr 2016 19:46:46 -0400"}
then = mktime_tz(parsedate_tz(d['value']))
now = time.time()
elapsed_seconds = now - then
datetime
オブジェクト(type(obj) == datetime.datetime
)と文字列を(混同しないでくださいtype(obj) == str
)。
最後に「-04:00」とは何を意味していますか? – linusg
'datetime.strptime'これらが両方とも' datetime'オブジェクトを取り除く文字列の場合 –
時間帯を設定する方法だと思いますか?元の辞書は次のようになります({"name": "Date"、 "value": "Mon、11 Apr 2016 19:46:46 -0400"} –