如何将字符串转换为gmt时间
Posted
技术标签:
【中文标题】如何将字符串转换为gmt时间【英文标题】:How to convert string to gmt time 【发布时间】:2019-11-25 05:43:31 【问题描述】:我得到一个字符串,我需要将其转换为 GMT 时间。我认为这是正确的,但我不确定。
t = 'Jan 17 2003 12:00:05:000 AM'
t = datetime.datetime.strptime(t,'%b %d %Y %I:%M:%S:%f %p')
它打印2003-01-17 00:00:05
,我认为这是正确的。但是我如何确定这是否是格林威治标准时间?我不确定是否有办法转换strptime
行上的时间。
【问题讨论】:
可能与***.com/questions/9433851/…重复 我已将字符串转换为日期时间对象。但是我如何确定它是否是gmt?时间从12:00:05
到00:00:05
所以我相信这是正确的时间。我猜为什么时间会改变?
【参考方案1】:
在您提出的问题中,无法判断时间是哪个时区。这是有道理的——如果我告诉你“2003 年 1 月 17 日,午夜后 5 分钟”,你可能不知道我说的是哪个时区。您也许可以假设给定时间适用于您当前所在的时区but that's dangerous,并且由于云执行频率的增加,很可能在很多时候给出错误答案(因为服务器可能在与用户不同的时区)。
您可能能够确认给定时间是 GMT 的一种方法是相对于另一个您知道其时间是 GMT 的事件来交叉引用它,然后您可以根据时区确定它关于差异。您可能能够确定时区的另一种方法是询问提供日期的人(如果是用户输入;您会注意到许多网站在您创建帐户时输入了您的时区,因此),或确定提供日期的任何实体的位置(如果可能),或找到其他方法来获取该信息。如果不知道日期应该来自哪里,就不可能给出更具体的建议。
The IANA provides a database of existing timezones 帮助实际从一个时区转换到另一个时区(因为它并不总是像向前或向后改变一个小时那样简单)。 This answer 还提供了一些关于将 datetime
对象从一个时区转换为另一个时区的见解。
【讨论】:
感谢您的解释。我假设没有真正的方法可以告诉。我猜strptime
是时区幼稚?
According to the datetime
documentation,datetime.strptime()
支持时区信息,但time.strptime()
忽略。默认情况下,它是时区天真,但如果时区信息是通过 %z
或 %Z
提供的,那么生成的 datetime
对象应该成为时区感知以上是关于如何将字符串转换为gmt时间的主要内容,如果未能解决你的问题,请参考以下文章
Java/Android - 将 GMT 时间字符串转换为本地时间