在Python中获取计算机的UTC偏移量
在Python中,如何找到计算机设置的UTC时间偏移量?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
在Python中,如何找到计算机设置的UTC时间偏移量?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(10)
time.timezone:
它以秒为单位打印 UTC 偏移量(以考虑帐户夏令时 (DST) 请参阅 time.altzone:
其中 utc offset 是通过以下方式定义的:“要获取本地时间,请将 utc 偏移量添加到 utc 时间。”
在 Python 3.3+ 中,有
tm_gmtoff
属性(如果底层 C 库支持):注意:
time.daylight
可能会在 一些边缘情况如果 datetime 在 Python 3.3+ 上可用,则会自动使用
tm_gmtoff
。 :要以解决
time.daylight
问题并且即使tm_gmtoff
不可用也能工作的方式获取当前 UTC 偏移量,@jts 的建议可用于子化本地和 UTC 时间:要获取过去/未来日期的 UTC 偏移量,
pytz
/zoneinfo
可以使用时区:它在 DST 转换期间工作,它适用于过去/未来的日期,即使本地时区当时具有不同的 UTC 偏移量,例如,2010-2015 年期间的欧洲/莫斯科时区。
time.timezone:
It prints UTC offset in seconds (to take into account Daylight Saving Time (DST) see time.altzone:
where utc offset is defined via: "To get local time, add utc offset to utc time."
In Python 3.3+ there is
tm_gmtoff
attribute if underlying C library supports it:Note:
time.daylight
may give a wrong result in some edge cases.tm_gmtoff
is used automatically by datetime if it is available on Python 3.3+:To get the current UTC offset in a way that workarounds the
time.daylight
issue and that works even iftm_gmtoff
is not available, @jts's suggestion to substruct the local and UTC time can be used:To get UTC offset for past/future dates,
pytz
/zoneinfo
timezones could be used:It works during DST transitions, it works for past/future dates even if the local timezone had different UTC offset at the time e.g., Europe/Moscow timezone in 2010-2015 period.
gmtime()
将返回 UTC 时间,localtime()
将返回本地时间,因此减去两者应该得到 utc 偏移量。来自 https://pubs.opengroup.org/onlinepubs/009695399/functions/gmtime .html
因此,尽管名称为
gmttime
,该函数仍返回 UTC。gmtime()
will return the UTC time andlocaltime()
will return the local time so subtracting the two should give you the utc offset.From https://pubs.opengroup.org/onlinepubs/009695399/functions/gmtime.html
So, despite the name
gmttime
, the function returns UTC.我喜欢:
我先尝试了 JTS 的答案,但它给了我错误的结果。我现在在-0700,但它说我在-0800。但我必须先进行一些转换才能得到可以减去的东西,所以也许答案不完整而不是错误。
I like:
I tried JTS' answer first, but it gave me the wrong result. I'm in -0700 now, but it was saying I was in -0800. But I had to do some conversion before I could get something I could subtract, so maybe the answer was more incomplete than incorrect.
时间模块 有一个时区偏移量,以“西西秒数”为单位的整数世界标准时间”
the time module has a timezone offset, given as an integer in "seconds west of UTC"
您可以使用
datetime
和dateutil
库来获取timedelta
对象:You can use the
datetime
anddateutil
libraries to get the offset as atimedelta
object:使用 UTC 校正时区创建 Unix 时间戳
这个简单的函数将使您轻松从 MySQL/PostgreSQL 数据库
date
对象获取当前时间。示例输出
Create a Unix Timestamp with UTC Corrected Timezone
This simple function will make it easy for you to get the current time from a MySQL/PostgreSQL database
date
object.Example Output
对我来说这个技巧是做什么的:
这样,我能够获得任意时区的utc偏移,而不仅仅是机器的时区(可以是虚拟机)时区配置错误)
What did the trick for me was doing:
This way, I'm able to get the utc offset of an arbitrary timezone not only the machine's timezone(which can be a VM with a misconfigured timezone)
这是一些仅导入日期时间和时间的 python3 代码。华泰
Here is some python3 code with just datetime and time as imports. HTH
这对我有用:
This works for me: