当前位置:  开发笔记 > 编程语言 > 正文

如何在python中使用带有datetime对象的时区?

如何解决《如何在python中使用带有datetime对象的时区?》经验,为你挑选了3个好方法。

如何在我的时区中正确表示不同的时区?以下示例仅有效,因为我知道EDT比我提前一小时,所以我可以取消注释myTimeZone()的减法

import datetime, re
from datetime import tzinfo

class myTimeZone(tzinfo):
    """docstring for myTimeZone"""
    def utfoffset(self, dt):
        return timedelta(hours=1)

def myDateHandler(aDateString):
    """u'Sat,  6 Sep 2008 21:16:33 EDT'"""
    _my_date_pattern = re.compile(r'\w+\,\s+(\d+)\s+(\w+)\s+(\d+)\s+(\d+)\:(\d+)\:(\d+)')
    day, month, year, hour, minute, second = _my_date_pattern.search(aDateString).groups()
    month = [
            'JAN', 'FEB', 'MAR', 
            'APR', 'MAY', 'JUN', 
            'JUL', 'AUG', 'SEP', 
            'OCT', 'NOV', 'DEC'
    ].index(month.upper()) + 1
    dt = datetime.datetime(
        int(year), int(month), int(day), 
        int(hour), int(minute), int(second)
    )                   
    # dt = dt - datetime.timedelta(hours=1)
    # dt = dt - dt.tzinfo.utfoffset(myTimeZone())
    return (dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, 0, 0, 0)

def main():
    print myDateHandler("Sat,  6 Sep 2008 21:16:33 EDT")

if __name__ == '__main__':
    main()

Armin Ronach.. 38

我推荐babelpytz使用时区时.保持内部日期时间对象的天真和UTC,并转换为您的时区仅用于格式化.你可能想要天真的对象(没有时区信息的对象)的原因是很多库和数据库适配器都不知道时区.

巴别塔

pytz


Thomas Woute.. 10

Python标准库不包含时区信息,因为遗憾的是,时区数据的变化速度比Python快得多.你需要一个第三方模块; 通常的选择是pytz



1> Armin Ronach..:

我推荐babelpytz使用时区时.保持内部日期时间对象的天真和UTC,并转换为您的时区仅用于格式化.你可能想要天真的对象(没有时区信息的对象)的原因是很多库和数据库适配器都不知道时区.

巴别塔

pytz



2> Thomas Woute..:

Python标准库不包含时区信息,因为遗憾的是,时区数据的变化速度比Python快得多.你需要一个第三方模块; 通常的选择是pytz


这不是一个正当理由.标准库可以使用其运行的平台上的资源(如果可用),如果未找到时区历史记录,则可以正常降级.

3> Carlos H Rom..:

对于当前的本地时区,您可以使用:

>>> import time
>>> offset = time.timezone if (time.localtime().tm_isdst == 0) else time.altzone
>>> offset / 60 / 60 * -1
-9

返回的值以UTC为单位的西秒(UTC以东的区域为负值).这与我们实际喜欢它的方式相反,因此* -1.

localtime().tm_isdst 如果夏令时目前没有生效,那么它将为零(尽管如果某个地区最近改变了他们的夏令时法则,这可能不正确).

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有