gpt4 book ai didi

python - 如何将 python datetime.datetime 转换为 excel 序列号

转载 作者:IT老高 更新时间:2023-10-28 21:15:27 24 4
gpt4 key购买 nike

我需要将日期转换为我正在编写的数据处理脚本的 Excel 序列号。通过使用我的 OpenOffice Calc 工作簿中的日期,我能够推断出 '1-Jan 1899 00:00:00' 映射到数字零。

我写了下面的函数来将python日期时间对象转换成Excel序列号:

def excel_date(date1):
temp=dt.datetime.strptime('18990101', '%Y%m%d')
delta=date1-temp
total_seconds = delta.days * 86400 + delta.seconds
return total_seconds

但是,当我尝试一些示例日期时,这些数字与我在 Excel(以及 OpenOffice Calc)中将日期格式化为数字时得到的数字不同。例如,在 Python 中测试 '2009-03-20' 得到 3478032000,而 excel 将序列号呈现为 39892。

上面的公式有什么问题?

*注意:我使用的是 Python 2.6.3,所以无权访问 datetime.total_seconds()

最佳答案

Excel“序列日期”格式似乎实际上是自 1900 年 1 月 00 日以来的天数,其中的小数部分是一天的一小部分,基于 http://www.cpearson.com/excel/datetime.htm . (我想这个日期实际上应该被认为是 1899-12-31,因为没有一个月的第 0 天)

所以,看起来应该是这样的:

def excel_date(date1):
temp = dt.datetime(1899, 12, 30) # Note, not 31st Dec but 30th!
delta = date1 - temp
return float(delta.days) + (float(delta.seconds) / 86400)

关于python - 如何将 python datetime.datetime 转换为 excel 序列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9574793/

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