得到tz偏移刺痛 [英] Get tz offset from sting

查看:135
本文介绍了得到tz偏移刺痛的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个当地时间的日期:

I have a date which is in local time:

date: "2013-12-02 22:00:00"

另一个值为tz:

timezone_offset: "GMT-0800"

如果我: code> dateutil.parser.parse(date).isoformat()我会得到:

If I : dateutil.parser.parse(date).isoformat() I will get:

"2013-12-02T22:00:00+0000"






我想使用tz信息实现ISO格式的日期,并得到以下结果:

"2013-12-02T22:00:00-0800"

接近的东西: parse(date,tzinfos = ??)。isoformat()?如何从字符串 timezone_offset 中获取tzinfo?

Something close to: parse(date,tzinfos=??).isoformat() ? How can I get the tzinfo from the string timezone_offset ?

推荐答案

>>> from dateutil.parser import parse
>>> dt = parse("2013-12-02 22:00:00" + "GMT+0800")
>>> dt.isoformat()
'2013-12-02T22:00:00-08:00'



Note: the sign is reversed.

您也可以只使用stdlib:

You could also do it using only stdlib:

>>> from datetime import datetime
>>> dt = datetime.strptime("2013-12-02 22:00:00", "%Y-%m-%d %H:%M:%S")
>>> dt = dt.replace(tzinfo=FixedOffset(-8*60, "GMT+0800"))
>>> dt.isoformat()
'2013-12-02T22:00:00-08:00'

其中 FixedOffset 取自 datetime docs

where FixedOffset is taken from datetime docs:

from datetime import tzinfo, timedelta

class FixedOffset(tzinfo):
    """Fixed offset in minutes east from UTC."""

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

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

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

    def dst(self, dt):
        return timedelta(0)

使用 pytz 模块

>>> from datetime import datetime
>>> import pytz
>>> dt = datetime.strptime("2013-12-02 22:00:00", "%Y-%m-%d %H:%M:%S")
>>> dt = pytz.timezone('Etc/GMT+8').localize(dt)
>>> dt.isoformat()
'2013-12-02T22:00:00-08:00'

这篇关于得到tz偏移刺痛的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆