概要
マイクロ秒を除外して現在の日時(秒までの情報)を取得するコードを3つ紹介します。
2023-07-12 22:43:13
のような形式です。
標準ライブラリのdatetime
(日付と時間を操作するためのクラスや関数を提供するモジュール)を使用します。
サンプルコード解説
from datetime import datetime
# 1
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(now)
# 2
now = datetime.now().replace(microsecond=0)
print(now)
# 3
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")[:-7]
print(now)
# 出力結果
# 2023-07-12 22:43:13
# 2023-07-12 22:43:13
# 2023-07-12 22:43:13
上記、いずれの場合も同じように「2023-07-12 22:43:13
」と表示され、マイクロ秒の部分をカットできています。
1.strftime()
を使用して秒までの情報を取得する方法
1つ目の方法では、strftime()
を使用して、指定されたフォーマットに基づいて日時を文字列に変換しています。
"%Y-%m-%d %H:%M:%S"
はフォーマット文字列であり、以下のような意味になります。
%Yは、4桁の年を表します(例: 2023)
%mは、2桁の月を表します(01から12)
%dは、2桁の日を表します(01から31)
%Hは、24時間形式の時を表します(00から23)
%Mは、分を表します(00から59)
%Sは、秒を表します(00から59)
フォーマット文字列を使用しているため自由にカスタマイズできます。
2. replace(microsecond=0)
を使用してマイクロ秒を除外する方法:
2つ目の方法では、replace(microsecond=0)
によって、マイクロ秒の部分が0に置き換えられます。0に置換されることで、マイクロ秒が表示されなくなる、という方法です。
結果がdatetime
オブジェクトとして返されるため、さらなる日時の計算や操作が可能であるという柔軟性はありますが、2回の関数呼び出しを行うため、パフォーマンス上のわずかなオーバーヘッドが発生する可能性があります。
3. スライスを使ってマイクロ秒を除外する方法:
2つ目の方法では、スライス[:-7]
によってマイクロ秒部分を除外しています。
直感的にどこで区切っているのかわかりづらく、また、マイクロ秒を含む文字列を一度生成してからスライスしているので、無駄な処理があります。