gpt4 book ai didi

python 2.7 mktime 给出相同输入的不同值

转载 作者:太空狗 更新时间:2023-10-29 12:42:31 25 4
gpt4 key购买 nike

以下代码在 Windows 上运行良好,在 Linux[Ubuntu] 中的结果很奇怪。我的python版本是2.7

from datetime import datetime
from datetime import timedelta
import time

def time_diff(date_str_1, date_str_2):
time_stamp_1 = time.mktime(time.strptime(date_str_1, '%Y-%m-%d-%H-%M-%S'))
time_stamp_2 = time.mktime(time.strptime(date_str_2, '%Y-%m-%d-%H-%M-%S'))
print '==='
print date_str_1,date_str_2
print time_stamp_1,time_stamp_2
delta1 = time_stamp_2 - time_stamp_1
return delta1

print time_diff('2015-11-01-01-00-00', '2015-11-01-01-30-00')
print time_diff('2015-11-01-01-00-00', '2015-11-01-02-00-00')
print time_diff('2015-11-01-01-00-00', '2015-11-01-02-30-00')
print time_diff('2015-11-01-01-00-00', '2015-11-01-03-00-00')

Windows 中的结果

===
2015-11-01-01-00-00 2015-11-01-01-30-00
1446310800.0 1446312600.0
1800.0
===
2015-11-01-01-00-00 2015-11-01-02-00-00
1446310800.0 1446314400.0
3600.0
===
2015-11-01-01-00-00 2015-11-01-02-30-00
1446310800.0 1446316200.0
5400.0
===
2015-11-01-01-00-00 2015-11-01-03-00-00
1446310800.0 1446318000.0
7200.0

Linux 中的结果

===
2015-11-01-01-00-00 2015-11-01-01-30-00
1446364800.0 1446366600.0
1800.0
===
2015-11-01-01-00-00 2015-11-01-02-00-00
1446364800.0 1446372000.0
7200.0
===
2015-11-01-01-00-00 2015-11-01-02-30-00
1446368400.0 1446373800.0
5400.0
===
2015-11-01-01-00-00 2015-11-01-03-00-00
1446368400.0 1446375600.0
7200.0

在 Linux 上'2015-11-01-01-00-00' 有时是 1446364800.0 然后变成 1446368400.0

这是什么原因?是bug吗?

最佳答案

我想问题出在你的 linux 系统上。我在类似 BSD unix 的 macOS 上运行,也在 pythonanywhere 上运行,这是一个 linux 服务器,两者都得到了与 Windows 完全相同的结果。

===
2015-11-01-01-00-00 2015-11-01-01-30-00
1446339600.0 1446341400.0
1800.0
===
2015-11-01-01-00-00 2015-11-01-02-00-00
1446339600.0 1446343200.0
3600.0
===
2015-11-01-01-00-00 2015-11-01-02-30-00
1446339600.0 1446345000.0
5400.0
===
2015-11-01-01-00-00 2015-11-01-03-00-00
1446339600.0 1446346800.0
7200.0

我建议您检查所有语言环境配置,以了解是否更改了诸如 datetime 之类的内容。您可以通过在 bash 中键入 locale 来检查。我的两个环境都有 LC_CTYPE="UTF-8"。其他是 “C”POSIX

LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

关于python 2.7 mktime 给出相同输入的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37337108/

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