使用UTC和任何其他时区的时间戳与箭头相同


import arrow    
print arrow.utcnow()
print arrow.utcnow().timestamp
print arrow.utcnow().to('Asia/Kolkata')
print arrow.utcnow().to('Asia/Kolkata').timestamp

我需要"亚洲/加尔各答"时区的时间戳(以int)为单位,即来自UTC的 5:30。

arrow.utcnow()arrow.utcnow().to('Asia/Kolkata')的出现是不同的,第二个是 5:30,第一个是预期的。

但是,arrow.utcnow().timestamparrow.utcnow().to('Asia/Kolkata').timestamp仍然相同。

我确定我在这里缺少一些非常基本的东西,但是有人可以解释一下吗?

我认为"时间戳"始终在UTC中:

UNIX时间(或Unix Epoch或Posix Time或Unix Timestamp)是 描述时间点的系统,定义为秒数 自午夜的五滴足量协调的通用时间(UTC)以来就过去了 1970年1月1日,不计数leap秒。

如果您使用本地时间字符串,请将其转换为UTC日期时间(即,下午5点加尔各答时间变为UTC下午5点),然后您可以获得与本地时钟时间相对应的时间戳。示例:

import arrow    
print arrow.utcnow()
print arrow.utcnow().timestamp
kolkata = arrow.utcnow().to('Asia/Kolkata')
print kolkata.replace(tzinfo='UTC').timestamp

时间戳是UTC,这也在箭头文档

中描述

时间戳

返回箭头对象的时间戳表示,in UTC时间。

箭头将使您将非UTC时间戳转换为箭头时间,但它不会通过为您生成非UTC时间戳来使自己开枪。

classmethod fromtimestamp(timestamp, tzinfo=None)

构造箭头 从时间戳转换为给定时区的对象。

参数:时间戳 - int或float时间戳或str 转换为两个。tzinfo - (可选)tzinfo对象。默认为 当地时间。时间戳应始终是UTC。如果您有非UTC 时间戳:

arrow.Arrow.utcfromtimestamp(1367900664).replace(tzinfo='US/Pacific') <Arrow [2013-05-07T04:24:24-07:00]>

完整的文档在这里:

http://arrow.readthedocs.io/en/latest/

相关内容

  • 没有找到相关文章