python的日期时间/时间问题(关闭18小时)

时间:2010-08-08 22:06:53

标签: python datetime time

我正在制作一个小型禁令系统,下面的代码片段会告诉客户他们的禁令剩余时间。

问题: 当你调用Bans.timeleft_str()时,而不是显示少于一天的东西,它会显示时间戳+18小时。

代码段:http://pastebin.com/Zumn0tLv

如果我改变self.length = WEEK等,则会出现此问题。而不是7d 00h 00m,它将是7d 18h 00m。

我最初在我的ubuntu vbox上测试了这个,然后在我的windows python shell上尝试了它,但仍然得到了相同的结果。

您可能需要将self.timestamp更改为过去的时间。

提前致谢。

1 个答案:

答案 0 :(得分:1)

time.time,正如我刚才指出的文档所说的那样,工作在UTC(曾经称为“格林威治”时间,现在是“通用时间坐标”)。 mktime,再次如其文档中所述,作为参数

9-tuple [...] which expresses the time in local time, not UTC.

strptime可以以任何方式工作(但您没有提供时区,因此它将使用当地时间。)

总的来说,你正在深入研究时区的混乱; - )。

我建议(一如既往)您在UTC上进行标准化(毕竟服务器的本地时区可能与其用户的时区不同),例如使用%Z指令采用您传递给strptime的格式,并在字符串的相应部分中使用相应的'UTC'时区(保证在所有平台上都能识别)解析。