pythonミリ秒の精度でフロートに日付と時刻の情報を保存する上品な方法は何ですか?編集:python 2.7を使用しています
私は一緒にハッキングしました:
DT = datetime.datetime(2016,01,30,15,16,19,234000) #trailing zeros are required
DN = (DT - datetime.datetime(2000,1,1)).total_seconds()
print repr(DN)
出力:
507482179.234
そして、datetimeに戻すには:
DT2 = datetime.datetime(2000,1,1) + datetime.timedelta(0, DN)
print DT2
出力:
2016-01-30 15:16:19.234000
しかし、私は本当にもう少し上品で堅牢なものを探しています。
Matlabでは、datenum
関数とdatetime
関数を使用します。
DN = datenum(datetime(2016,01,30,15,16,19.234))
そして元に戻すには:
DT = datetime(DN,'ConvertFrom','datenum')
Python 2:
def datetime_to_float(d):
Epoch = datetime.datetime.utcfromtimestamp(0)
total_seconds = (d - Epoch).total_seconds()
# total_seconds will be in decimals (millisecond precision)
return total_seconds
def float_to_datetime(fl):
return datetime.datetime.fromtimestamp(fl)
Python 3:
def datetime_to_float(d):
return d.timestamp()
python 3バージョンのfloat_to_datetime
は、上記のpython 2バージョンと同じです。
多分timestamp
(そしてfromtimestamp
)
>>> from datetime import datetime
>>> now = datetime.now()
>>> now.timestamp()
1455188621.063099
>>> ts = now.timestamp()
>>> datetime.fromtimestamp(ts)
datetime.datetime(2016, 2, 11, 11, 3, 41, 63098)