LoginSignup
7
8

More than 5 years have passed since last update.

【追記】月の英語名を含むタイムスタンプをdatetimeへ変換

Last updated at Posted at 2015-12-03

Jan, Feb, ...などを含むタイムスタンプの処理

データを時系列順にソートするコードを書く際、月の英名を含むタイムスタンプの処理に手間取ったのでメモ。

時刻の比較を行うために、タイムスタンプをdatetimeオブジェクトへ変換したいが、Jan,Febといった英名を含むタイムスタンプは、そのままでは変換できない。

そこで、calendarモジュールで英名と月の対応をさせる。

test.py
import datetime
import calendar

timestamp = "Dec 3 14:55:51"
words = timestamp.split(" ")
months = {}
for i ,v in enumerate(calendar.month_abbr):
    months[v] = i
time_string = "2015-" + str(months[words[0]]) + "-" + str(words[1]) + " " + words[2]
time_datetime = datetime.datetime.strptime(time_string, '%Y-%m-%d %H:%M:%S')

これで無事、datetimeオブジェクトが生成される。
決め打ち感が凄いので汎用性はないですが、メモということで。

追記

コメントでご指摘をいただきましたが、datetimeのドキュメントに月の英名からの変換が載っているそうです。見落としておりました。
8.1.7. strftime() と strptime() の振る舞い

また、年号の決め打ちに関してもpython-dateutilを用いれば適宜解決してくれるとの情報も頂戴しました。ありがとうございます。

参考

Pythonで文字列 <-> 日付(date, datetime) の変換
Python 英語の省略形月名(Jan, Feb, Mar, Apr …)の場所

7
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8