当前位置: 首页 > 知识库问答 >
问题:

使用python来确定时间戳是否在夏令时之下

袁运良
2023-03-14

这不起作用:

t = os.path.getmtime(filename)
dTime = datetime.datetime.fromtimestamp(t)
justTime = dTime.timetuple()
if justTime.tm_isdst == 0 :
    tDelta = datetime.timedelta(hours=0)
else:
    tDelta = datetime.timedelta(hours=1)

相反,发生的情况是条件始终等于 1,尽管某些时间戳在白天的保存时间内。

我正在尝试使python调用与基于c的调用的行为相匹配。

共有2个答案

景温书
2023-03-14

为什么假设文件系统用时区写下时间戳?

服务器上,你坚持使用没有夏令时的UTC。在台式机上,您应该查找夏令时变化的最新时刻(开或关),并相应地校正时间。我不知道< code>pytz是否有这些信息,但这些信息在网上肯定是以机器可读的形式提供的。

请注意,在从DST转换期间的某些时刻,一些本地时间值会出现两次,并且无法判断特定时间戳(例如凌晨2:30)是发生在切换之前还是之后(一小时内)。

谢麒
2023-03-14

要了解给定时间戳是否与本地时区的夏令时 (DST) 相对应,请执行以下操作:

import os
import time

timestamp = os.path.getmtime(filename)
isdst = time.localtime(timestamp).tm_isdst > 0

可能会失败。要解决这些问题,您可以使用< code>pytz模块获得对tz数据库的可移植访问:

from datetime import datetime
import tzlocal  # $ pip install tzlocal

local_timezone = tzlocal.get_localzone() # get pytz tzinfo
isdst = bool(datetime.fromtimestamp(timestamp, local_timezone).dst())

相关:使用Python找出时区当前是否处于夏令时。

 类似资料:
  • 看来我星期一早上有个案子!!! 正如你们所能看到的,我的本地机器位于东部时区,日光节约已经生效。这可以从下面的“日期”命令中看到。 然后我使用php生成了一个unix时间戳。它应该给出您当前的时间并在1970年1月1日的UTC 0:0:0将其转换为Unix纪元。 我的mysql会话被设置为UTC,我想象1460992469表示为mktime转换为UTC。 问题是转换回est不承认夏令时。谁能帮我指

  • 夏令时间 选择[标准]或[夏令时间]。

  • 问题内容: 如何检查夏令时是否有效? 问题答案: 您可以使用并查看返回值中的标志。 使用,您可以在任意时间问相同的问题,以了解DST在当前时区是否有效。

  • 我有一个Java客户机,它正在以UTC格式在MySQL DB中插入(通过CSV和'Load DATA Infile')时间戳(type TIMESTAMP)。我的服务器的时区是“America/New_York”,我需要保留夏令时信息。11月5日凌晨2点是美国东部时间转换到东部时间的时候,时钟拨回一个小时到凌晨1点。例如,11月5日凌晨1:30,发生两次;EDT和EST各一次。 我该如何让服务器区

  • 问题内容: 我正在编写一个处理很多时区并跨越时区的程序。我最常处理的两件事是从“ now”创建一个datetime对象,然后本地化一个朴素的datetime对象。 要从现在开始在太平洋时区创建datetime对象,我目前正在执行此操作(python 2.7.2+) 关于DST,这是否正确?如果没有,我想应该这样做: 我的问题是为什么?谁能告诉我第一个错误而第二个秒正确的情况? 至于我的秒数问题,假

  • 问题内容: 我需要知道是否由以下时间段定义: 内部有一个DST。 我正在遍历{start,end}定义的时间段集合,并在每次迭代中将开始和结束时间提前24小时。结果周期从午夜开始,到下一个午夜之前的1 ms结束。我发现如果该期间在班次内有夏令时,则会产生错误的结果,例如: 具有: 然后完成转移: 产生: 我想知道JodaTime中是否有任何标准API可以检查一段时间内是否有DST? 问题答案: 使