【SikuliX】【Python】現在の日時を取得・時刻の指定をしてみよう

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

まとめ

今回は、ログの書き出しや日時を用いた計算や条件分岐などに役立つ、日時の取得方法を紹介しました。他にも、時刻を扱う構文は様々なものがあります。ぜひ活用してみて下さい。

スポンサーリンク