Convert to UTC Timestamp

前端 未结 4 1295
遥遥无期
遥遥无期 2021-01-08 00:09
//parses some string into that format.
datetime1 = datetime.strptime(somestring, \"%Y-%m-%dT%H:%M:%S\")

//gets the seconds from the above date.
timestamp1 = time.mk         


        
相关标签:
4条回答
  • 2021-01-08 00:46

    datetime.utcfromtimestamp is probably what you're looking for:

    >>> timestamp1 = time.mktime(datetime.now().timetuple())
    >>> timestamp1
    1256049553.0
    >>> datetime.utcfromtimestamp(timestamp1)
    datetime.datetime(2009, 10, 20, 14, 39, 13)
    
    0 讨论(0)
  • 2021-01-08 01:00
    def getDateAndTime(seconds=None):
     """
      Converts seconds since the Epoch to a time tuple expressing UTC.
      When 'seconds' is not passed in, convert the current time instead.
      :Parameters:
          - `seconds`: time in seconds from the epoch.
      :Return:
          Time in UTC format.
    """
    return time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime(seconds))`
    

    This converts local time to UTC

    time.mktime(time.localtime(calendar.timegm(utc_time)))
    

    http://feihonghsu.blogspot.com/2008/02/converting-from-local-time-to-utc.html

    If converting a struct_time to seconds-since-the-epoch is done using mktime, this conversion is in local timezone. There's no way to tell it to use any specific timezone, not even just UTC. The standard 'time' package always assumes that a time is in your local timezone.

    0 讨论(0)
  • 2021-01-08 01:02

    You probably want one of these two:

    import time
    import datetime
    
    from email.Utils import formatdate
    
    rightnow = time.time()
    
    utc = datetime.datetime.utcfromtimestamp(rightnow)
    print utc
    
    print formatdate(rightnow) 
    

    The two outputs look like this

    2009-10-20 14:46:52.725000
    Tue, 20 Oct 2009 14:46:52 -0000
    
    0 讨论(0)
  • 2021-01-08 01:11

    I think you can use the utcoffset() method:

    utc_time = datetime1 - datetime1.utcoffset()
    

    The docs give an example of this using the astimezone() method here.

    Additionally, if you're going to be dealing with timezones, you might want to look into the PyTZ library which has lots of helpful tools for converting datetime's into various timezones (including between EST and UTC)

    With PyTZ:

    from datetime import datetime
    import pytz
    
    utc = pytz.utc
    eastern = pytz.timezone('US/Eastern')
    
    # Using datetime1 from the question
    datetime1 = datetime.strptime(somestring, "%Y-%m-%dT%H:%M:%S")
    
    # First, tell Python what timezone that string was in (you said Eastern)
    eastern_time = eastern.localize(datetime1)
    
    # Then convert it from Eastern to UTC
    utc_time = eastern_time.astimezone(utc)
    
    0 讨论(0)
提交回复
热议问题