使用 python 确定时间戳是否处于夏令时
Using python to determine if a timestamp is under daylight savings time
这不起作用:
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 的调用的行为相匹配。
为什么您假设您的 文件系统 写下带有时区的时间戳?
在服务器上,您坚持使用没有 DST 的 UTC。在桌面上,您应该查看 DST 更改的最新时刻(打开或关闭),并相应地更正时间。我不知道 pytz
是否有此信息,但此信息肯定可以在网络上以机器可读的形式获得。
请注意,在某些时刻 在 从 DST 转换期间,一些本地时间值会出现 两次 ,并且无法判断是否特定时间戳(例如 2:30 am)发生在切换之前或之后(一小时内)。
要找出给定的时间戳是否对应于当地时区的夏令时 (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.
这不起作用:
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 的调用的行为相匹配。
为什么您假设您的 文件系统 写下带有时区的时间戳?
在服务器上,您坚持使用没有 DST 的 UTC。在桌面上,您应该查看 DST 更改的最新时刻(打开或关闭),并相应地更正时间。我不知道 pytz
是否有此信息,但此信息肯定可以在网络上以机器可读的形式获得。
请注意,在某些时刻 在 从 DST 转换期间,一些本地时间值会出现 两次 ,并且无法判断是否特定时间戳(例如 2:30 am)发生在切换之前或之后(一小时内)。
要找出给定的时间戳是否对应于当地时区的夏令时 (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.