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

标签 python datetime timezone

如何在我的时区中正确表示不同的时区?下面的示例仅适用,因为我知道 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()

最佳答案

在使用时区时,我推荐 babelpytz。保持您的内部日期时间对象天真并使用 UTC 并转换为您的时区以进行格式化。您可能想要简单对象(没有时区信息的对象)的原因是许多库和数据库适配器不知道时区。

关于python - 如何在 python 中使用带有 datetime 对象的时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/117514/

相关文章:

python - python 中的 swagger_client 尝试使用 Strava API

python - 基于 curses UI 的 slider

java - 如何从 Java 8 中的 LocalDateTime 获取毫秒数

sql - 将带有时区的时间戳转换为星期几

node.js - Momentjs timezone - 在特定时区获取日期

MySql 时区 JDBC 问题

python - pygobject 通知操作中未调用回调

python - 将条件变量与 nltk 的索引模块一起使用

mysql - 如何在 MySQL 中查找满足某些条件的日期时间?

database - 在oracle中将数字转换为日期