从 1904 年开始以秒为单位转换时间
Convert time in seconds from 1904
我必须在 python 中将 1904 年的时间转换为秒数。我找到了解决方案,但没有给出预期的结果。
其实我不明白python是怎么转换时间的,因为我是用shell脚本做的,答案和python不一样。
shell中的示例:
origine=$(date -d '1904-01-01 00:00:00 +0000' '+%s')
T0day=${origine#-}
Tday= $(date -d '2011-10-06 18:05:56 +0000' '+%s')
echo "obase=16;"$Tday+$T0day"" | bc
如果您尝试在 python 中这样做:
dt=datetime.datetime(2011, 10, 06, 18, 05,56)
t1=int(time.mktime(dt.timetuple()))
dt=datetime.datetime(1904, 1, 1, 0, 0, 0)
t2=int(time.mktime(dt.timetuple()))
t3= int(t1+t2)
print (hex(t3))
结果 shell:CAB39E84
结果 python:CAB38264
python有没有更好的编码方案?
import datetime
dt_base = datetime.datetime(1904, 1, 1, 0, 0, 0)
dt = datetime.datetime(2011, 10, 06, 18, 05, 56)
total_seconds = (dt - dt_base).total_seconds()
print(total_seconds)
# 3400769156.0
我必须在 python 中将 1904 年的时间转换为秒数。我找到了解决方案,但没有给出预期的结果。
其实我不明白python是怎么转换时间的,因为我是用shell脚本做的,答案和python不一样。
shell中的示例:
origine=$(date -d '1904-01-01 00:00:00 +0000' '+%s')
T0day=${origine#-}
Tday= $(date -d '2011-10-06 18:05:56 +0000' '+%s')
echo "obase=16;"$Tday+$T0day"" | bc
如果您尝试在 python 中这样做:
dt=datetime.datetime(2011, 10, 06, 18, 05,56)
t1=int(time.mktime(dt.timetuple()))
dt=datetime.datetime(1904, 1, 1, 0, 0, 0)
t2=int(time.mktime(dt.timetuple()))
t3= int(t1+t2)
print (hex(t3))
结果 shell:CAB39E84
结果 python:CAB38264
python有没有更好的编码方案?
import datetime
dt_base = datetime.datetime(1904, 1, 1, 0, 0, 0)
dt = datetime.datetime(2011, 10, 06, 18, 05, 56)
total_seconds = (dt - dt_base).total_seconds()
print(total_seconds)
# 3400769156.0