代码之家  ›  专栏  ›  技术社区  ›  Michael Dorner Satyanarayana

在Python中对datetime应用时区偏移

  •  1
  • Michael Dorner Satyanarayana  · 技术社区  · 6 年前

    对于给定的日期字符串,例如 2009-01-01T12:00:00+0100 我想要UTC datetime对象。

    from datetime import datetime 
    datetime.strptime("2013-03-21T14:19:42+0100", "%Y-%m-%dT%H:%M:%S%z")
    

    datetime.datetime(2013, 3, 21, 14, 19, 42, tzinfo=datetime.timezone(datetime.timedelta(0, 3600)))
    

    我真不敢相信这世上没有办法 datetime pandas 用于将时区相关偏移量应用于datetime并返回纯UTC datetime。

    如何应用 tzinfo tzinfo=None )?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Landar    6 年前

    这感觉有点脏,但确实管用

    from datetime import datetime
    orig_dt = datetime.strptime("2013-03-21T14:19:42+0100", "%Y-%m-%dT%H:%M:%S%z")  # datetime.datetime(2013, 3, 21, 14, 19, 42, tzinfo=datetime.timezone(datetime.timedelta(0, 3600)))
    utc_time_value = orig_dt - orig_dt.utcoffset()
    utc_dt = utc_time_value.replace(tzinfo=None)  # datetime.datetime(2013, 3, 21, 13, 19, 42)
    
        2
  •  1
  •   Danon TylerDurden    5 年前

    下面是一个实际的代码(内置):

    from datetime import datetime, timezone, timedelta
    
    return datetime(yy, mm, dd, hh, min, ss, 0, timezone(timedelta(hours=5)))       # +0500
    # or
    return datetime(yy, mm, dd, hh, min, ss, 0, timezone(timedelta(seconds=18000))) # +0500