Skip to content Skip to sidebar Skip to footer

Convert Time Zone + Format In Python From Twitter Api

In Python, with TwitterSearch, I'm able to get the timestamp of the tweet in UTC time, in the following format : Thu Mar 19 12:37:15 +0000 2015 However, I would like to obtain it

Solution 1:

If EST is your local timezone then you could do it using only stdlib:

#!/usr/bin/env pythonfrom datetime import datetime
from email.utils import parsedate_tz, mktime_tz

timestamp = mktime_tz(parsedate_tz('Thu Mar 19 12:37:15 +0000 2015'))
s = str(datetime.fromtimestamp(timestamp))
# -> '2015-03-19 08:37:15'

It supports non-UTC input timezones too.

Or you could specify the destination timezone explicitly:

import pytz # $ pip install pytz

dt = datetime.fromtimestamp(timestamp, pytz.timezone('US/Eastern'))
s = dt.strftime('%Y-%m-%d %H:%M:%S')
# -> '2015-03-19 08:37:15'

You could put it in a function:

#!/usr/bin/env pythonfrom datetime import datetime
from email.utils import parsedate_tz, mktime_tz

defto_local_time(tweet_time_string):
    """Convert rfc 5322 -like time string into a local time
       string in rfc 3339 -like format.

    """
    timestamp = mktime_tz(parsedate_tz(tweet_time_string))
    return datetime.fromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S')

time_string = to_local_time('Thu Mar 19 12:37:15 +0000 2015')
# use time_string here..

Solution 2:

Remove the +0000 from the date sent by twitter and do something like:

from datetime import datetime
import pytz

local = 'Europe/London'#or the local from where twitter date is coming from
dt = datetime.strptime("Thu Mar 19 12:37:15 2015", "%a %b %d %H:%M:%S %Y")
dt = pytz.timezone(local).localize(dt)
est_dt = dt.astimezone(pytz.timezone('EST'))

print est_dt.strftime("%Y-%m-%d %H:%M:%S")

Output:

2015-03-19 07:37:15

Alternatively you can do something like (in this case you don't need to remove the +0000 timezone info):

from dateutil import parser

dt = parser.parse("Thu Mar 19 12:37:15 +0000 2015")
est_dt = dt.astimezone(pytz.timezone('EST'))

print est_dt.strftime("%Y-%m-%d %H:%M:%S")

Output

2015-03-19 07:37:15

By the way, EST is UTC-4 or UTC-5?

Post a Comment for "Convert Time Zone + Format In Python From Twitter Api"