GUIを自動で操作するフリーツール:SikuliX ですが、Pythonの構文を使用して、時刻の情報を扱うことができます。この情報を使えば、ログの書き出しや日時を用いた計算や条件分岐などができるようになります。
本記事では、時刻情報の取得方法について、まとめます。
モジュールのインポート
Pythonで時刻を扱うには、まず「time」もしくは「datetime」というモジュールをインポートする必要があります。そのため、以下のいずれかをコードの初めに記載しておいてください。
import time
import datetime
timeモジュール
現在時刻の取得
time()を使用します。time() は、timeモジュールで定義されているtimeメソッドです。
コードサンプル:
import time
now_time = time.time()
print(now_time)
実行結果:
1577804400
なんじゃこりゃ・・・って思う人がいるかもしれません。これは、エポック秒(UNIX時間)と言い、1970年1月1日0時0分0秒からの秒数になります。なので、ちゃんとした時刻なのです。timeモジュールのtimeメソッドを用いると、このエポック秒で表示されます。ちなみに上記の結果は、現在時刻が2020年1月1日0時0分0秒の場合です。
datetimeモジュール
現在時刻の取得(パターン①)
datetime.now()を使用します。注意しないといけないのは、datetimeモジュールに含まれる「datetime.nowメソッド」なので、使用する際はdatetime.datetime.now()となる点です。
後述のdatetime.today()も日時の情報を取得できますが、こちらの方が精度が高く、datetime.now()の方が一般的に使われるようです。また、datetime.now()は「タイムゾーンの情報を受け取る」という特徴があります。
コードサンプル:
import datetime
now_datetime = datetime.datetime.now()
print(now_datetime)
実行結果:
2020-01-01 00:00:00.000000
現在時刻の取得(パターン②)
datetime.today()を使用します。前述のdatetime.now()との違いは、today()だと「タイムゾーンの情報を受け取らない」という点です。また、精度においても、datetime.now()より劣るようです。
コードサンプル:
import datetime
now_datetime_today = datetime.datetime.today()
print(now_datetime_today)
実行結果:
2020-01-01 00:00:00.000000
現在の日付のみの取得
date.today()を使用します。
コードサンプル:
import datetime
now_date_today = datetime.date.today()
print(now_date_today)
実行結果:
2020-01-01
また、datetime.now().date()を使用する方法もあります。dateがメソッドなのは、年月日を結合する処理がなされているからです。
コードサンプル:
import datetime
now_date_today = datetime.datetime.now().date()
print(now_date_today)
実行結果:
2020-01-01
現在の時間のみの取得
datetime.now().time()を使用します。timeがメソッドなのは、時分秒を結合する処理がなされているからです。
コードサンプル:
import datetime
now_date_today = datetime.datetime.now().time()
print(now_date_today)
実行結果:
12:34:56.789000
現在の日時を分割して取得
datetime.now()の後ろに、year、month、day、hour、minute、second、microsecondを用いて取得します。
コードサンプル:
import datetime
now_datetime = datetime.datetime.now()
print(now_datetime)
now_datetime_year = datetime.datetime.now().year
print(now_datetime_year)
now_datetime_month = datetime.datetime.now().month
print(now_datetime_month)
now_datetime_day = datetime.datetime.now().day
print(now_datetime_day)
now_datetime_hour = datetime.datetime.now().hour
print(now_datetime_hour)
now_datetime_minute = datetime.datetime.now().minute
print(now_datetime_minute)
now_datetime_second = datetime.datetime.now().second
print(now_datetime_second)
now_datetime_microsecond = datetime.datetime.now().microsecond
print(now_datetime_microsecond)
実行結果:
2020-09-01 12:34:56.789000
2020
09
01
12
34
56
789000
【番外】日時⇔文字列変換
日時⇒文字列の変換
strftime()を使用します。時刻のフォーマットは、日付は「-」で区切り、時刻は「:」で区切るように決まっています。このフォーマットを変換したい場合などに有効です。
年は「%Y」、月は「%m」、日は「%d」、時は「%H」、分は「%M」、秒は「%S」を表しています。年月日時分秒を用いて、どのようなフォーマットにするかをstrftimeメソッドの引数で示しています。
コードサンプル:
import datetime
now_datetime = datetime.datetime.now()
str_datetime = now_datetime.strftime(“%Y/%m/%d %H’%M’%S”)
print(now_datetime)
print(str_datetime)
実行結果:
2020-01-02 12:34:56.789000
2020/01/02 12’34’56
文字列⇒日時の変換
strptime()を使用します。任意の時刻のフォーマットをPythonの時刻のフォーマットに変換する場合などに有効です。
strftimeメソッドと同様に、年は「%Y」、月は「%m」、日は「%d」、時は「%H」、分は「%M」、秒は「%S」を表します。任意のフォーマットにおいて、どれを年月日時分秒にするかをstrptimeメソッドの引数で示します。
コードサンプル:
import datetime
str_datetime = 2020/01/02 12’34’56
datetime = str_datetime.strptime(“%Y/%m/%d %H’%M’%S”)
print(str_datetime)
print(datetime)
実行結果:
2020/01/02 12’34’56
2020-01-02 12:34:56
まとめ
今回は、ログの書き出しや日時を用いた計算や条件分岐などに役立つ、日時の取得方法を紹介しました。他にも、時刻を扱う構文は様々なものがあります。ぜひ活用してみて下さい。