Changing a unix timestamp to a different timezone

后端 未结 3 714
旧巷少年郎
旧巷少年郎 2020-12-19 07:07

I retrieve a unix timestamp from a web service in a Python program. This timestamp is in a USA timezone. In order to insert it in a MySQL database with other objects, locali

3条回答
  •  独厮守ぢ
    2020-12-19 07:30

    I had a similar problem in the past when the timestamps of the files we downloaded from a service provider had timestamps corresponding to the PST time zone. The following helped me do to the conversion:

    import pytz, datetime, time
    import os
    
    originalTimeStamp = os.stat("/tmp/file-from-us-west-coast").st_mtime
    
    # prints e.g. 2010-03-31 13:01:18
    print "original:",datetime.datetime.fromtimestamp(originalTimeStamp)
    
    # re-interpret 
    originalTimeZone = "America/Los_Angeles"
    targetTimeZone   = "Europe/Paris"
    
    newTimeStamp = pytz.timezone(originalTimeZone).localize(datetime.datetime.fromtimestamp(originalTimeStamp)).astimezone(pytz.timezone(targetTimeZone))
    
    # prints e.g. 2010-03-31 22:01:18+02:00
    print "new:     ",newTimeStamp
    
    # convert back to seconds since epoch
    newTimeStamp = time.mktime(newTimeStamp.timetuple())
    
    # print time difference in hours
    print (newTimeStamp - originalTimeStamp) / 3600.0
    

提交回复
热议问题