How to convert local time string to UTC?

后端 未结 23 1170
离开以前
离开以前 2020-11-22 04:18

How do I convert a datetime string in local time to a string in UTC time?

I\'m sure I\'ve done this before, but can\'t find it and SO will hopefull

23条回答
  •  孤街浪徒
    2020-11-22 04:48

    I have this code in one of my projects:

    from datetime import datetime
    ## datetime.timezone works in newer versions of python
    try:
        from datetime import timezone
        utc_tz = timezone.utc
    except:
        import pytz
        utc_tz = pytz.utc
    
    def _to_utc_date_string(ts):
        # type (Union[date,datetime]]) -> str
        """coerce datetimes to UTC (assume localtime if nothing is given)"""
        if (isinstance(ts, datetime)):
            try:
                ## in python 3.6 and higher, ts.astimezone() will assume a
                ## naive timestamp is localtime (and so do we)
                ts = ts.astimezone(utc_tz)
            except:
                ## in python 2.7 and 3.5, ts.astimezone() will fail on
                ## naive timestamps, but we'd like to assume they are
                ## localtime
                import tzlocal
                ts = tzlocal.get_localzone().localize(ts).astimezone(utc_tz)
        return ts.strftime("%Y%m%dT%H%M%SZ")
    

提交回复
热议问题