[python3] 日付、日時データの取り扱い
Posted on 2019/03/20 in programming , Updated on: 2019/04/02
インポート
Python で日付型データを利用する際には、datetime
モジュールをインポートする。
import datetime
現在の日付と時間
日付までを取り出す際は、datetime.date
関数を、時間まで取り出す際は、datetime.datetime
関数を使う。
today = datetime.date.today()
print(today)
# 2019-04-01
now = datetime.datetime.now()
print(now)
# 2019-04-01 18:00:00.000000
現在の年や月などを指定して取り出し
各要素の取り出し方は、.year
等を datetime
型オブジェクトに渡す。
now = datetime.datetime.now()
# 年を表示
print(now.year)
# 2019
# 時間を表示
print(now.hour)
# 18
メソッド | 取り出される値 |
---|---|
now.year | 年 |
now.month | 月 |
now.day | 日 |
now.hour | 時間 |
now.minute | 分 |
now.second | 秒 |
now.microsecond | マイクロ秒 |
日付の計算
datetime.timedelta()
メソッドを使って、日付の足し算や引き算が可能。引数には、差分を取りたい値を指定する。また、複数の引数を渡すことも可能。
today = datetime.date.today()
print(today)
# 2019-04-01
tomorrorw = today + datetime.timedelta(days=1)
print(tomorrow)
# 2019-04-02
now = datetime.datetime.now()
print(now)
# 2019-04-01 18:00:00.000000
next_week_2hours_ago = now + datetime.timedelta(weeks=1, hours=2)
print(next_week_2hours_ago)
# 2019-04-08 20:00:00.000000
引数 | 差分 |
---|---|
weeks=1 | 1週 |
days=1 | 1日 |
hours=1 | 1時間 |
minutes=1 | 1分 |
seconds=1 | 1秒 |
microseconds=1 | マイクロ1秒 |
日付のフォーマット
datetime のデフォルトでは、today() は "2019-04-01" 形式で出力される。.format()
関数を利用して、フォーマットを自由に変更できる。
today1 = datetime.date.today()
print(today1)
# 2019-04-01
today2 = "{0:%Y/%m/%d}".format(today1)
print(today2)
# 2019/04/01
日付型を文字列に
datetime 型から string 型への変換。
before = datetime.datetime.now()
after = before.strftime('%Y/%m/%d %H:%M:%S')
print(type(before), before)
# <class 'datetime.datetime'> 2019-04-01 18:00:00.000000
print(type(after), after)
# <class 'str'> 2019/04/01 18:00:00
````
## 文字列を日付型に
string 型から datetime 型への変換。
```python
before = '2019-04-01 18:00:00'
after = datetime.datetime.strptime(before, '%Y-%m-%d %H:%M:%S')
print(type(before), before)
# <class 'str'> 2019-04-01 18:00:00
print(type(after), after)
# <class 'datetime.datetime'> 2019-04-01 18:00:00
日時型から日付型へ
before = datetime.datetime.now()
after = datetime.date(before.year, before.month, before.day)
print(type(before), before)
# <class 'datetime.datetime'> 2019-04-01 18:00:00.000000
print(type(after), after)
# <class 'datetime.date'> 2019-04-01