首页 > 解决方案 > 将yyyymmdd转换为序列号python

问题描述

如何将格式为 yyyymmdd 的日期列表转换为序列号?例如,如果我有这个日期列表:

t = [1898-10-12 06:00,1898-10-12 12:00,1932-09-30 08:00,1932-09-30 00:00]

如何将每个日期转换为序列号?我目前使用 datetime toordinal() 命令,但每个日期都被四舍五入为相同的序列号。如何让不同时间的相同日期成为不同的数字?

列表中的时间是 datetime.datetime 数字。我试着做:

thurser = []
for i in range(len(t)):
    thurser.append(t[i].toordinal())

但是我没有将序列号作为浮点数。

标签: pythondatetime

解决方案


如果我的理解有误,请告诉我,我尝试跟踪并为列表的每个值提供不同的数字。
我修改
t = ['1898-10-12 06:00','1898-10-12 12:00','1932-09-30 08:00','1932-09-30 00:00']

t = [datetime.datetime(1898, 10, 12, 6, 0), datetime.datetime(1898, 10, 12, 12, 0), datetime.datetime(1932, 9, 30, 8, 0), datetime.datetime(1932, 9, 30, 0, 0)]
如评论中所述,它是 datetime.datetime 列表。
我正在考虑从1970-01-01 00:00:00给定日期开始的总 MilliSeconds 来生成一个数字。
因此,在上述日期之前的日期会给出负值。但价值观不同。

t = [datetime.datetime(1898, 10, 12, 6, 0), datetime.datetime(1898, 10, 12, 12, 0), datetime.datetime(1932, 9, 30, 8, 0), datetime.datetime(1932, 9, 30, 0, 0)]
thurser = []
x = []
for i in range(len(t)):
    thurser.append(t[i].toordinal())
    x.append((t[i]-datetime.datetime.utcfromtimestamp(0)).total_seconds() * 1000.0)

print(thurser)
print(x)

输出:

[693150, 693150, 705556, 705556]
[-2247501600000.0, -2247480000000.0, -1175616000000.0, -1175644800000.0]

推荐阅读