web-dev-qa-db-ja.com

pythonミリ秒の精度で浮動小数点の日時

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')
10
Swier

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バージョンと同じです。

16
jatinderjit

多分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)
5
second