2022年4月17日日曜日

【標準ライブラリ】datetimeによる現在日時の取得

 標準ライブラリdatetimeを用いると現在日時が取得できる。

ライブラリdatetimeを使う際にはimportが必要。

import datetime




1. date/datetimeオブジェクト

 datetime.dateオブジェクトは年・月・日、datetime.datetimeオブジェクトは年・月・日・時・分・秒・マイクロ秒からなり、これらのオブジェクトに現在日時を取得するメソッドを適用することで現在日時が取得できる。また取得した現在日時に、年・月・日などの項目に対応する属性を適用することで、年・月・日などを個別に取得できる
 取得可能な項目と属性、取りうる範囲は以下表のとおり

項目 属性 範囲
西暦 year 1-9999
month 1-12
day 1-31(月により28,29,30)
hour 0-23
minute 0-59
second 0-59
マイクロ秒 microsecond 0-999999


2. date.today()による現在日時の取得

datetime.dateオブジェクトに対して、today()メソッドを適用することで現在の年・月・日を取得できる。

import datetime

print(datetime.date.today())

実行結果

2022-04-29


today()メソッドによる戻り値はdatetime.date型。

import datetime

print(type(datetime.date.today()))

実行結果

<class 'datetime.date'>


today()メソッドを適用し、属性yearmonthdayを指定すると、現在の年・月・日を個別に取得できる。

import datetime

print(datetime.date.today().year)

実行結果

2022


個別に取得した年・月・日はint型になる。

import datetime

print(type(datetime.date.today().year))

実行結果

<class 'int'>


3. datetime.now()/datetime.today()による現在日時の取得

datetime.datetimeオブジェクトに対して、today()メソッドを適用することで現在の年・月・日・時・分・秒・マイクロ秒を取得できる。

import datetime

datetime.datetime.today()

実行結果

2022-4-17 10:7:17.785741)


today()メソッドによる戻り値はdatetime.datetime型。

import datetime

print(type(datetime.datetime.today()))

実行結果

<class 'datetime.datetime'>


now()メソッドでも同様に現在の年・月・日・時・分・秒・マイクロ秒を取得できる。

import datetime

print(datetime.datetime.now())

実行結果

2022-4-17 10:43:58.512176)


today()メソッドを適用し、属性yearmonthdayhourminutesecondmicrosecondを指定すると、現在の年・月・日・時・分・秒・マイクロ秒を個別に取得できる。

import datetime

print(datetime.datetime.today().minute)

実行結果

46


個別に取得した属性値はint型になる。

import datetime

print(type(datetime.datetime.today().minute))

実行結果

<class 'int'>


4. strftimeによる現在日時の文字列化

strftime()メソッドを適用することで、date、datetimeオブジェクトの値を指定した書式の文字列として取得できる。書式の指定はC89で制定された書式コードを用いる。多数の書式コードがあるが代表的なものは以下。

書式コード 内容 戻り値の例
%Y 0埋めした西暦4桁 2022
%m 0埋めした月 04
%d 0埋めした日 07
%H 0埋めした時 09
%M 0埋めした分 39
%S 0埋めした秒 55
%a 曜日短縮形 Mon
%b 月名短縮形 Dec


datetime.now()メソッドで取得した現在日時にstrftime()メソッドを適用する例。年月日時分秒が文字列で取得される。

import datetime

print(datetime.datetime.now().strftime('%Y%m%d%H%M%S'))

実行結果

20220417112401


strftime()メソッドの書式として、書式コードと通常の文字を混在させることで任意の書式を作成可能。

import datetime

print(datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S'))

実行結果

'2022-04-17-11-43-07'


5. リファレンス

Python 標準ライブラリ > datetime --- 基本的な日付型および時間型 > date オブジェクト
Python 標準ライブラリ > datetime --- 基本的な日付型および時間型 > datetime オブジェクト
Python 標準ライブラリ > datetime --- 基本的な日付型および時間型 > classmethod datetime.today()
Python 標準ライブラリ > datetime --- 基本的な日付型および時間型 > classmethod datetime.now(tz=None)
Python 標準ライブラリ > datetime --- 基本的な日付型および時間型 > strftime() と strptime() の振る舞い

使用バージョン:Python 3.8.12

0 件のコメント:

コメントを投稿