使用datetime.strptime解析仅含时间的字符串为何输出默认日期?
使用datetime.strptime解析仅含时间的字符串为何输出默认日期?
嗨,这个问题其实挺常见的,我来给你拆解下原因~
首先你要明白,Python里datetime.strptime()函数返回的是一个完整的datetime对象,这个对象必须同时包含日期和时间信息,缺了哪一部分都不行。当你只传入了时间字符串(比如你的"8:00"),没有指定日期部分的时候,Python的datetime模块就会自动给你填充一个默认的起始日期——也就是1900-01-01,这是模块内置的规则哦。
看你的代码示例:
time_str = "8:00" time_dt = dt.datetime.strptime(time_str,"%H:%M") print(time_dt)
这里的%H:%M格式符只定义了小时和分钟的解析规则,但datetime对象本身需要完整的日期时间数据,所以就用默认日期补全了,最终输出就是1900-01-01 08:00:00。
如果你的需求只是获取时间部分,不想带日期的话,可以调用datetime对象的time()方法来提取:
print(time_dt.time())
这样输出就会是08:00:00,只有你需要的时间信息啦。
至于为什么默认日期是1900-01-01?这是沿用了很多传统系统里的日期起始设定,算是datetime模块的一个既定规则,不管你在哪个notebook里跑,这个默认值都是固定的,所以你换了环境结果也一样~
备注:内容来源于stack exchange,提问作者Sreeram Ajithkumar
相关产品推荐
相关产品推荐

