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().timestamp
和arrow.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/