- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
以下代码在 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')
===
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
===
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/
我想从 string 得到一个 unix 时间戳包含形式 YYYYMMDDThhmmss+TZ 的时间表示. 为此,我将字符串转换为 struct tm然后使用 mktime将其转换为unix时间戳。
这是一个 PHP 问题。当我测试这段代码时 echo date("d-m-y h:i:S"); 在我的本地服务器和我的托管网站(这两个具有不同的时区)上,它们返回不同的日期时间值,正如预期的那样。但是
我想在微 Controller 上使用 mktime(或者至少使用 32 位宽的时间戳)。我从 avr libc source files 添加了所需的文件(在 Atmel Studio 7 中,时间
我正在将 azure-sdk 用于 python,特别是 azure-servicebus 0.50.0 from azure.servicebus import QueueClient servic
我在 mktime() 中遇到了年份问题。 每次我将低于 1970 年的年份传递到 struct tm 中,然后运行 mktime() 函数来转换我的结构时,都会失败(返回 -1) 。 有人知道为
我正在开发按含义分隔字符的程序。目前我遇到了 konverzia 函数的问题。它应该在日期字符串中添加日期名称(星期三、星期四、星期五...),但它根本不在乎。日期必须类似于周三 2012-02-01
我正在尝试将以 HHMMSS.SS,DD,MM,YYYY 格式给出的时间转换为 unix 时间。问题是,然后调用 mktime,返回相同的 time_t。 ConvertTime(std::strin
我有一个日期操作类。当我尝试用相同的值初始化它时,第一个实例工作正常,但所有其他实例每次都返回不同的值。我将日期保存在 time_t DATE 变量中。 它的构造函数: CDate (int y,in
在一个简单的测试中,获取从 de Unix Epoch (01/01/1970 00:00:00 UTC) 到 2019 年 2 月 22 日的耗时(以秒为单位),它返回了大量的 1844674407
我正在尝试将一周重复添加到包含日期信息的事件结构中。我这样做是为了在某个时间之前创建一个事件的多个实例。我的 mktime 函数出现段错误,其中 full_time = mktime(&caltime
我想用澳大利亚/悉尼时区构造一个struct tm,所以我首先使用: setenv("TZ","Australia/Sydney",1); tzset() 然后我将struct tm设置为: stru
这是将 Fri Jan 1 00:00:00 IST 1970 转换为 EPOCH 的代码段 memset(&Date_st,0,sizeof(struct tm)); Date_st.tm_ye
我正在尝试将用户输入日期添加到现有时间结构中,但我收到了一个我不明白的错误。当我试图修改月份日期时,编译器告诉我工作日超出范围。代码贴在下面。 struct tm date; int m, d, y,
这个问题在这里已经有了答案: C++ mktime returning random dates (3 个答案) 关闭 6 年前。 我准备了以下结构: struct tm tDepartureTim
在尝试编写返回比给定时间少 24 小时的代码时,mktime() 显示不一致的输出。我的计算类似于:current_time(GMT) - 86400 应该返回正确的值。我们需要做的就是根据输入的时间
这个问题已经有答案了: Python | mktime overflow error (2 个回答) 已关闭 6 年前。 使用 Python 时 time模块我收到此错误: OverflowError
继续 my attempt to create a DateTime class ,我试图在我的函数中存储“纪元”时间: void DateTime::processComponents(int mo
我现在正在使用 gcc 编译器在我的 RedHat Linux 机器上编写一个 C 程序,它将接受两个日期作为输入并计算它们之间的差异。 但是,我发现 mktime() 有一个奇怪的行为,如下面的代码
我做的一个网站突然出现以下错误,到目前为止一直运行良好: A PHP Error was encountered Severity: Warning Message: mktime() [functi
我正在研究一些与时间相关的功能,我选择始终使用 UTC 时间并将时间戳存储为整数以保持一致性。 但是,我注意到当我使用mktime 时,当前设置的时区似乎对mktime 的返回值有影响。从文档中我了解
我是一名优秀的程序员,十分优秀!