#author("2019-05-14T09:57:59+09:00","default:Miyashita","Miyashita")
#author("2019-05-14T09:58:42+09:00","default:Miyashita","Miyashita")
*日付・時刻データの扱い [#ia0df79e]
**はじめに [#l3c4e695]
datetime の中に datetime があるため,
#codeprettify{{
import datetime # ①
from datetime import datetime # ②
}}
の2種類のインポートが見られる.ちょっと紛らわしい.~
timedelta は datetime.timedelta なので気をつけたい.
ここでは①のインポートを前提とする.
また,1900年1月1日以前の時刻を扱う際はややこしいので注意する.~
datetime 型の変数は matplotlib 等でもそのまま使用できる.
~
~
***文字列→datetime 型 [#re687d34]
テキストファイルから読み込んだ文字列群を,python 上で処理できるように変換する際に使用する.~
format を指定するときは strptime,勝手に判別してほしいときは dateutil.parser.parse を使う.~
#codeprettify{{
t = datetime.datetime.strptime(str_time, '%y/%m/%d %H:%M:%S') # formatは一例
}}
#codeprettify{{
from dateutil.parser import parse
t = parse(str_time)
}}
リスト型の str_time の桁が不揃いでややこしい場合に parse が役立つ.~
#codeprettify{{
dtime = [parse(k) for k in str_time]
}}
~
~ 
***datetime 型→文字列 [#f84f7cac]
ファイル名や図のタイトル,ラベルとして表示する際に使用する.
dtime という datetime 型の変数であれば,
#codeprettify{{
str_date = dtime.strftime('%y/%m/%d') # formatは一例
}}
で通常は変換できる.ただし,1900年1月1日より前の日付時刻だとエラーになってしまうため工夫が必要.~
文字列として表示させる時だけ strftime の年を適当な値(≧1900)で埋める.
#codeprettify{{
tmp = datetime.datetime(1900, dtime.month, dtime.day) # 年はどの値でもOK(2月29日以外)
str_date = str(dtime.year) + "/" + tmp.strftime("%m/%d")
}}
~
***datetime.datetime [#g8c4ccfa]
日付・時刻をそれぞれ直接入力することで datetime.datetime オブジェクトを生成する.年月日は必須(引数は最低3つ).時以降はオプション.
#codeprettify{{
dtime = datetime.datetime(year, month, day, hour, minute, second, microsec)
}}
~
~
***datetime.timedelta [#cff2e715]
日付・時刻のデータは,全てを生の時刻で保持している場合と,ある基準時刻を軸にそこからの差分をリストとしてデータに格納している場合がある.~
timedeltaは後者の場合に頻繁に使う.~
日数を表す数値配列 num_days の,最初の要素との差分を取得するには
#codeprettify{{
import numpy as np
delta_days = [datetime.timedelta(days=num_days[k]-num_days[0]) for k in np.arange(0,len(num_days))]
}}
datetime 型のリスト dtime という変数からある基準時刻(yyyy年mm月dd日)との差を取得するには
#codeprettify{{
delta_time = [dtime[k] - datetime.datetime(yyyy,mm,dd) for k in np.arange(0,len(dtime))]
}}
~
~
** numpy.datetime64 [#dc78082b]
これまでの datetime とは別に,numpy.datetime64 もある.~

Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes