【问题标题】:python datetime to float with millisecond precision [duplicate]python datetime以毫秒精度浮动[重复]
【发布时间】:2016-05-22 02:37:13
【问题描述】:

在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

然后恢复到日期时间:

DT2 = datetime.datetime(2000,1,1) + datetime.timedelta(0, DN)
print DT2

输出:

2016-01-30 15:16:19.234000

但我真的在寻找更优雅和更强大的东西。

在 matlab 中我会使用 datenumdatetime 函数:

DN = datenum(datetime(2016,01,30,15,16,19.234))

然后返回:

DT = datetime(DN,'ConvertFrom','datenum')

【问题讨论】:

  • 谢谢 J.F. Sebastian,你是对的,我错过了这个问题,因为我不知道它被称为时间戳。我会研究其他问题和答案。

标签: python python-2.7 datetime


【解决方案1】:

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()

float_to_datetime 的 python 3 版本与上面的 python 2 版本没有什么不同。

【讨论】:

  • 您的 Python 2/3 datetime_to_float() 版本不一致,除非您的本地时区是 UTC。
  • datetime.datetime.fromtimestamp() 也可以用来避免时区冲突
【解决方案2】:

在 Python 3 中,您可以使用: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)

【讨论】:

  • datetime.datetime 似乎没有timestamp 属性,这是python 3的吗?我正在使用 2.7(忘了提,抱歉) 编辑:从 jatinderjit 的回答看来 .timestamp 确实只是 python 3
猜你喜欢
  • 2014-08-07
  • 1970-01-01
  • 2011-12-30
  • 2012-10-13
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多