And*_*rei 2 python timestamp python-3.x
我是一名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()
Run Code Online (Sandbox Code Playgroud)
完整代码: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)
Run Code Online (Sandbox Code Playgroud)
要将Excel编号转换为Unix时间戳,可以使用该timetuple方法将datetime.date对象转换为timetuple,然后使用time.mktime将其转换为时间戳(自Epoch以来的秒数):
In [80]: import time
In [81]: time.mktime((DT.datetime(1899,12,30) + DT.timedelta(days=39814)).timetuple())
Out[81]: 1230786000.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2446 次 |
| 最近记录: |