RFC2822形式の日付をpythonのdatetimeに変換する

(Comments)

# -*- coding: utf-8 -*-

"""
RFC2822形式の日付をpythonのdatetimeに変換する関数
Sun, 05 Jun 2011 05:32:25 +0000
Wed, 08 Jun 2011 01:21:23 +0900

実行結果:
2011-06-08 01:21:23.824852
Wed, 08 Jun 2011 01:21:23 +0900
2011-06-08 01:21:23+09:00
Wed, 08 Jun 2011 01:21:23 +0900

参考: http://mitc.xrea.jp/diary/096
"""

import datetime
import email.utils

def parse_date_string_to_datetime(date_string_rfc822):
    """
    RFC2822形式の日付を解析して、
    JST aware な datetime にする
    """
    timetuple = email.utils.parsedate_tz(date_string_rfc822)
    d = datetime.datetime(*timetuple[:7]) #native
    d -= datetime.timedelta(seconds=timetuple[-1])
    d = d.replace(tzinfo=UTC()).astimezone(JST())
    return d #aware

class UTC(datetime.tzinfo):
    def utcoffset(self, dt):
        return datetime.timedelta(0)
    def dst(self, dt):
        return datetime.timedelta(0)
    def tzname(self, dt):
        return "UTC"

class JST(datetime.tzinfo):
    def utcoffset(self,dt):
        return datetime.timedelta(hours=9)
    def dst(self,dt):
        return datetime.timedelta(0)
    def tzname(self,dt):
        return "JST"

def demo():
    #test
    now = datetime.datetime.now()
    print(now)
    s = now.strftime("%a, %d %b %Y %H:%M:%S +0900") #nativeなので%zつかえない
    print s
    parsed = parse_date_string_to_datetime(s)
    print(parsed)
    print(parsed.strftime("%a, %d %b %Y %H:%M:%S %z")) #awareなので%zつかえる

if __name__ == '__main__':
    demo()
Current rating: 5

Comments

Recent Tweets

  • 大坂昌彦

    大坂昌彦 @masahiko_osaka

    ytyng

    ついに犯人がわかってしまいました! ナル、一昨日にも僕だったので、昨日の人しかいません!! ペダルにガムテープ貼っても良いけど、剥がして帰って欲しい。散々、自分の足で踏みつけたガムテープを何で次の人が剥がさなきゃならないの??自分… https://t.co/Contz66ZK9
    4 days ago

  • ytyng

    ytyng @ytyng

    Shopify の在庫数更新API GraphQLの場合: 一括更新できる 絶対値更新できない REST API の場合: 一括更新できない 絶対値更新できる なんなのそれ https://t.co/0QyibNQXdt
    2 weeks, 6 days ago

  • ytyng

    ytyng @ytyng

    #bulma スペーシングヘルパー、マージされてる! もうこれBootstrapじゃん https://t.co/uI8fZ6lAOw
    2 weeks, 6 days ago

Recent Posts

Archive

2020
2019
2018
2017
2016
2015
2014
2013
2012
2011

Categories

Authors

Feeds

RSS / Atom