我已经看到excel可以识别具有特定序列号的日期。例如:
09/07/2018 = 43290
10/07/2018 = 43291
我知道我们使用DATEVALUE
,VALUE
和TEXT
函数在这些类型之间进行转换。
但是这种转换背后的逻辑是什么?为什么43290
代表09/07/2018
?
此外,如果我在dataframe
(Python)中以数字格式列出了这些日期,如何将这个数字转换为日期格式?
与时间类似,我看到十进制值代替常规时间格式。这些时间转换背后的逻辑是什么?
以下评论中给出的问题是有启发性的,但不能回答我有关日期和文本格式之间转换背后逻辑的问题: convert numerical representation of date (excel format) to python date and time, then split them into two seperate dataframe columns in pandas
答案 0 :(得分:2)
这只是自1900年1月1日以来的天数(如果谈论日期和时间,则为天数):
DATEVALUE函数将以文本形式存储的日期转换为 Excel识别为日期的序列号。例如, 公式= DATEVALUE(“ 1/1/2008”)返回39448,即 日期1/1/2008。不过请记住,您计算机的系统日期 设置可能导致DATEVALUE函数的结果与 这个例子
...
Excel将日期存储为顺序序列号,以便可以在计算中使用它们。默认情况下,1900年1月1日为序列号1,而2008年1月1日为序列号39448,因为它是1900年1月1日之后的39447天。
如果我在数据框中以数字格式列出了这些日期 (Python),如何将该数字转换为日期格式?
由于我们知道此数字表示自1900年1月1日以来的天数,因此可以轻松将其转换为日期:
from datetime import datetime, timedelta
day_number = 43290
print(datetime(1900, 1, 1) + timedelta(days=day_number - 2))
# 2018-07-09 00:00:00 ^ subtracting 2 because 1/1/1900 is
# "day 1", not "day 0"
但是pd.read_excel
应该能够自动处理此问题。