2011-12-20 6 views
0

pubDateのは形式である:保管RSS pubDateの

2011-12-19T01:56:28から06:00

2011-10-19T06: 11:02 + 00:私は関係なく、タイムゾーンの、(db.DateTimePropertyに保管)、日付ごとにアイテムを並べ替えることができるように00

はどのようにして、共通の時間帯にこれを変換することができますか?

答えて

3

これは、ISO8601日時フォーマットの変形です。これは、そのような日付を解析するための私の関数です:

from datetime import datetime, timedelta 

def parse_iso8601_datetime(dtstr, loose=False): 
    """ 
    Convert ISO8601 datetime string and return Python datetime.datetime. 
    Specify loose=True for more relaxed parsing accepting eg "YYYY-MM-DD" format. 

    Raise ValueError on malformed input. 
    """ 
    dt = None 
    if len(dtstr) == 19: # (eg '2010-05-07T23:12:51') 
     dt = datetime.strptime(dtstr, "%Y-%m-%dT%H:%M:%S") 
    elif len(dtstr) == 20: # (eg '2010-05-07T23:12:51Z') 
     dt = datetime.strptime(dtstr, "%Y-%m-%dT%H:%M:%SZ") 
    elif len(dtstr) == 25: # (eg '2010-05-07T23:12:51-08:00') 
     dt = datetime.strptime(dtstr[0:19], "%Y-%m-%dT%H:%M:%S") 
     tzofs = int(dtstr[19:22]) 
     dt = dt - timedelta(hours=tzofs) 
    else: 
     if loose: 
      if len(dtstr) == 10: # (eg '2010-05-07') 
       dt = datetime.strptime(dtstr, "%Y-%m-%d") 
     if not dt: 
      raise ValueError("Invalid ISO8601 format: '%s'" % dtstr) 
    return dt 
+0

優秀!,私の作品:) – ofko