【问题标题】:timestamp from year and day of year?一年中的时间戳?
【发布时间】:2017-07-04 16:10:54
【问题描述】:

我必须从 Python 2.7 中的项目列表中推断出时间戳编号。

对于每个项目,我都有创建它的年份和日期,例如:

year = 2015
days = 154

我没有任何关于小时、分钟、秒和毫秒的数据,所以我假设它们都等于0

谁能帮我推断一个时间戳?

【问题讨论】:

  • 只有年份和星期,您无法知道确切的日期,因此您无法获得时间戳。您至少需要一周中的某一天,以及获取时间戳的时间(小时/分钟/秒)(或者您假设时间为零,但无论如何您需要定义如何处理丢失的字段)。
  • 您需要定义“周”的含义(以及您希望在这 7 天期间的什么时间)。有不同的解释。请参阅有关 Week numbering 的维基百科文章。
  • 是否可以有年份和那一年的日期的时间戳?例如:年 = 2015 日 = 154
  • 即使你有一天,你仍然需要小时、分钟、秒和毫秒来获取时间戳(或者你可以假设它们都为零,但你仍然需要定义这些字段)。
  • 如果我假设小时、分钟、秒和毫秒为零?

标签: python date timestamp


【解决方案1】:

给定一个和一个一年中的某天,您可以有一个日期,包括日、月和年。但是要获得时间戳,您仍然需要小时、分钟、秒、毫秒和时区。

在下面的示例中,我将时间字段(小时/分钟/秒/毫秒)设置为零,时区设置为 UTC:

from datetime import datetime
from pytz import timezone

year = 2017
day_of_year = 154
# strptime sets the hours/minutes/secs to zero
d = datetime.strptime("%s %s" % (year, day_of_year), "%Y %j").replace(tzinfo = pytz.utc)
print(d.timestamp())
print(d)

日期 d 将是 2017-06-03 00:00:00+00:00 并且相应的时间戳将是 1496448000 - 从 unix 纪元 (1970-01-01T00:00:00Z) 开始的秒数。如果您希望时间戳以 毫秒 为单位,只需将此值乘以 1000。

虽然我使用的是 UTC,但您可以更改它以使用最适合您的情况的时区。

【讨论】:

猜你喜欢
  • 2021-12-23
  • 2014-11-18
  • 1970-01-01
  • 2013-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多