gpt4 book ai didi

python - 根据日期和时区计算 tm_isdst

转载 作者:行者123 更新时间:2023-12-01 05:53:22 24 4
gpt4 key购买 nike

当我运行该线路时

time.strptime("2012-06-01 12:00:00 "+time.strftime("%Z"), "%Y-%m-%d %H:%M:%S %Z")

它为我创建了一个结构,但标志tm_isdst是错误的。 6 月初,夏令时有效,但无论我输入什么日期,tm_isdst 标志始终设置为当前 localtime() 中的值。我需要知道在我输入的日期 DST 是否有效。

最佳答案

首先,请勿在格式中包含 time.strftime('%Z')。你告诉它你当前的 GMT 偏移量(包括关闭夏令时),它[可能]使用它来设置 tm_isdst。

如果没有这个,您应该得到一个带有 tm_isdst=-1 的结构:

>>> time1 = time.strptime("2012-06-01 12:00:00", "%Y-%m-%d %H:%M:%S")
>>> time1
time.struct_time(tm_year=2012, tm_mon=6, tm_mday=1, tm_hour=12, tm_min=0,
tm_sec=0, tm_wday=4, tm_yday=153, tm_isdst=-1)

现在,您可以将其传递给 mktime,它会在给定 -1 值的情况下“猜测”DST 值(我将“猜测”放在引号中,因为它始终是正确的,除了凌晨 2 点不明确的情况)。这将以 time() 格式给出绝对时间。

>>> time.mktime([previous value]) # my timezone is US Eastern
1338566400.0

然后你可以用这个值调用 localtime,它将有一个正确设置的 DST 标志:

>>> time.localtime(1338566400).tm_isdst
1

您还可以跳过 strptime 步骤并直接将值传递给 mktime:

>>> time.mktime((2012,6,1,12,0,0,-1,-1,-1))
1338566400.0

关于python - 根据日期和时区计算 tm_isdst,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13464009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com