gpt4 book ai didi

Python 返回 5 位数字时间戳,这是什么?

转载 作者:行者123 更新时间:2023-11-28 21:54:03 24 4
gpt4 key购买 nike

我是一名 PHP 程序员,正在做一些 Python (3.4),只是因为在 Python 中做起来更容易。我的脚本将一个 .xlsx 文件转换为许多 .csv 文件(每张纸一个 .csv)。

代码如下:

wb = xlrd.open_workbook(filepath)

for i in range(0, wb.nsheets):

sh = wb.sheet_by_index(i)
sheet_name = sh.name
sheet_name = sheet_name.replace(" ", "_");
fp = open(sheet_name+'.csv', 'at', encoding='utf8')
wr = csv.writer(fp, quoting=csv.QUOTE_ALL)

for row_num in range(sh.nrows):
wr.writerow(sh.row_values(row_num))

fp.close()

完整代码在这里:https://github.com/xtrimsky/xlsx_to_csv

这很好用,除了我有一个日期字段,在 excel 中它显示例如:01/01/2009

但最终的 csv 包含一个数字 39814。请问这是什么,我能用它做什么? 01/02/2009 是 39815。

它是我可以用来查找 unix 时间戳的数字吗?还是这是一个问题,我应该更改我的脚本?如果它只返回字符串“01/01/2009”,我会感觉更安全。

有人可以帮助我理解我正在处理的事情吗?

最佳答案

如果 39814 映射到 2009-1-1,而 39815 映射到 2009-1-2,那么看起来序号是在计算自 1899-12-30 以来的天数:

In [57]: DT.date(1899,12,30) + DT.timedelta(days=39814)
Out[57]: datetime.date(2009, 1, 1)

参见 Why 1899-12-30!?

要将 Excel 数字转换为 Unix 时间戳,您可以使用 timetuple methoddatetime.date 对象转换为时间元组,然后 time.mktime将其转换为时间戳(自大纪元以来的秒数):

In [80]: import time

In [81]: time.mktime((DT.datetime(1899,12,30) + DT.timedelta(days=39814)).timetuple())
Out[81]: 1230786000.0

关于Python 返回 5 位数字时间戳,这是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24853480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com