这不起作用:
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的调用的行为。
答案 0 :(得分:3)
要确定给定时间戳是否与当地时区的夏令时(DST)相对应:
import os
import time
timestamp = os.path.getmtime(filename)
isdst = time.localtime(timestamp).tm_isdst > 0
It may fail。要解决这些问题,您可以使用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())
相关:Use Python to find out if a timezone currently in daylight savings time。
答案 1 :(得分:0)
为什么假设您的文件系统使用时区写下时间戳?
在服务器上,您坚持使用没有DST的UTC。在桌面上,您应该查看DST更改的最新时刻(打开或关闭),并相应地更正时间。我不知道pytz
是否有此信息,但这些信息绝对可以通过网络以机器可读的形式获得。
请注意,在过渡期间从DST过渡时,某些本地时间值会出现两次,并且无法确定某个特定时间戳(例如凌晨2:30) )在开关之前或之后(一小时内)发生。