python timestamp和datetime之间的转换_python – 在datetime,Timestamp和datetime64之间转换

要将numpy.datetime64转换为datetime对象,它表示UTC中的时间在numpy-1.8上:

>>> from datetime import datetime

>>> import numpy as np

>>> dt = datetime.utcnow()

>>> dt

datetime.datetime(2012, 12, 4, 19, 51, 25, 362455)

>>> dt64 = np.datetime64(dt)

>>> ts = (dt64 - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')

>>> ts

1354650685.3624549

>>> datetime.utcfromtimestamp(ts)

datetime.datetime(2012, 12, 4, 19, 51, 25, 362455)

>>> np.__version__

'1.8.0.dev-7b75899'

上面的例子假设一个朴素的datetime对象由np.datetime64解释为UTC时间。

要将datetime转换为np.datetime64和back(numpy-1.6):

>>> np.datetime64(datetime.utcnow()).astype(datetime)

datetime.datetime(2012, 12, 4, 13, 34, 52, 827542)

它适用于单个np.datetime64对象和np.datetime64的numpy数组。

想象np.datetime64同样的np.int8,np.int16等,并应用相同的方法来转换beetween Python对象,如int,datetime和相应的numpy对象。

你的“讨厌的例子”正常工作:

>>> from datetime import datetime

>>> import numpy

>>> numpy.datetime64('2002-06-28T01:00:00.000000000+0100').astype(datetime)

datetime.datetime(2002, 6, 28, 0, 0)

>>> numpy.__version__

'1.6.2' # current version available via pip install numpy

我可以再现numpy-1.8.0上安装的long值:

pip install git+https://github.com/numpy/numpy.git#egg=numpy-dev

同样的例子:

>>> from datetime import datetime

>>> import numpy

>>> numpy.datetime64('2002-06-28T01:00:00.000000000+0100').astype(datetime)

1025222400000000000L

>>> numpy.__version__

'1.8.0.dev-7b75899'

它返回长,因为对于numpy.datetime64类型.astype(datetime)等价于.astype(object)在numpy-1.8上返回Python integer(long)。

要获得datetime对象,你可以:

>>> dt64.dtype

dtype('

>>> ns = 1e-9 # number of seconds in a nanosecond

>>> datetime.utcfromtimestamp(dt64.astype(int) * ns)

datetime.datetime(2002, 6, 28, 0, 0)

要获取直接使用秒的datetime64:

>>> dt64 = numpy.datetime64('2002-06-28T01:00:00.000000000+0100', 's')

>>> dt64.dtype

dtype('

>>> datetime.utcfromtimestamp(dt64.astype(int))

datetime.datetime(2002, 6, 28, 0, 0)

numpy docs表示datetime API是实验性的,并可能在未来的numpy版本中更改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值