首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将基于GMT的时间转换为UTC python

将基于GMT的时间转换为UTC python
EN

Stack Overflow用户
提问于 2014-08-19 07:41:47
回答 2查看 7.9K关注 0票数 1

我从数据库中得到了一个像2014/08/19 03:38:46 GMT-4这样的约会。

如何用Python将其转换为UTC格式的日期?

PS:我使用Python2.6.6

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-19 07:54:19

如果有一个非朴素的datetime对象,则只应该使用所需的时区调用时区方法。

代码语言:javascript
复制
>>> import pytz
>>> from dateutil import parser
# dateutil.parser get a datetime object from string, we ensure that is a non-naive datetime
>>> parser.parse('2014/08/19 03:38:46 GMT-4')
datetime.datetime(2014, 8, 19, 3, 38, 46, tzinfo=tzoffset(None, 14400))
>>> dt = parser.parse('2014/08/19 03:38:46 GMT-4')
>>> dt.astimezone (pytz.utc)
datetime.datetime(2014, 8, 18, 23, 38, 46, tzinfo=<UTC>)

您的评论是正确的,utc的时间应该已经过去了,所以当我想另一个解决方案时,这是怎样的呢?

代码语言:javascript
复制
>>> dt = parser.parse('2014/08/19 03:38:46 GMT-4')
>>> dt.replace(tzinfo=pytz.utc) + dt.tzinfo._offset
datetime.datetime(2014, 8, 19, 7, 38, 46, tzinfo=<UTC>)
票数 4
EN

Stack Overflow用户

发布于 2014-09-14 16:59:42

GMT-4是模棱两可的:是在美国/新你(-0400 utc偏移)还是在欧洲/莫斯科(+0400)?

代码语言:javascript
复制
$ TZ=GMT-4 date +%Z%z
GMT+0400
$ TZ=UTC-4 date +%Z%z
UTC+0400
$ TZ=America/New_York date +%Z%z
EDT-0400
$ TZ=Europe/Moscow date +%Z%z
MSK+0400

你的评论表明表示您需要倒转utc偏移量的符号。

Python2.6在stdlib中没有固定偏移时区。你可以用文档

代码语言:javascript
复制
from datetime import tzinfo, timedelta, datetime

ZERO = timedelta(0)

class FixedOffset(tzinfo):
    """Fixed UTC offset: `local = utc + offset`."""

    def __init__(self, offset, name):
        self.__offset = timedelta(hours=offset)
        self.__name = name

    def utcoffset(self, dt):
        return self.__offset

    def tzname(self, dt):
        return self.__name

    def dst(self, dt):
        return ZERO

utc = FixedOffset(0, "UTC")

然后,要解析时间字符串,可以使用strptime()

代码语言:javascript
复制
dt = datetime.strptime("2014/08/19 03:38:46 GMT-4", "%Y/%m/%d %H:%M:%S GMT-4")
aware = dt.replace(tzinfo=FixedOffset(-4, "GMT-4"))
print(aware)                 # -> 2014-08-19 03:38:46-04:00
print(aware.astimezone(utc)) # -> 2014-08-19 07:38:46+00:00
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25378072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档