从twitter日期到Python日期时间日期

Jav*_*aaa 41 python django twitter date

我收到的Twitter消息是在特定日期以下列格式从twitter发送的:

Tue Mar 29 08:11:25 +0000 2011
Run Code Online (Sandbox Code Playgroud)

我想在postgresql中使用djangos DateTimeField字段将这些日期存储在"timestamp with time zone"字段中.当我存储该字符串但是我收到此错误:

ValidationError: [u'Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format.']
Run Code Online (Sandbox Code Playgroud)

我可以自动将twitter日期类型转换为python日期时间(在我的应用程序的其他地方可以用来保存日期).

Chr*_*ing 63

写这样的东西应该将推特日期转换为时间戳.

import time

ts = time.strftime('%Y-%m-%d %H:%M:%S', time.strptime(tweet['created_at'],'%a %b %d %H:%M:%S +0000 %Y'))
Run Code Online (Sandbox Code Playgroud)


Rob*_*wie 13

放手一搏.它假定来自twitter的日期格式符合RFC822(请参阅@Adrien链接的问题).

构造了一个天真的日期时间对象(即没有时区信息).它根据UTC的时区偏移进行调整.除非您需要保留原始时区,否则我会在显示时将日期时间存储为UTC并格式化为本地时间.

from datetime import datetime, timedelta
from email.utils import parsedate_tz

s = 'Tue Mar 29 08:11:25 +0000 2011'

def to_datetime(datestring):
    time_tuple = parsedate_tz(datestring.strip())
    dt = datetime(*time_tuple[:6])
    return dt - timedelta(seconds=time_tuple[-1])
Run Code Online (Sandbox Code Playgroud)


str*_*der 8

有点旧,但使用 parse 真的可以帮助我解决这个问题

from datetime import datetime
from dateutil.parser import parse

date = 'Fri May 10 00:44:04 +0000 2019' 
dt = parse(date)

print(dt) 
# 2019-05-10 00:44:04+00:00
Run Code Online (Sandbox Code Playgroud)