【python】 「TypeErrorが発生して動かない!」,「フォーマットの書き方が覚えられない!」

python

正直に言うと、現役エンジニアの私も、最初は「strftimeだっけ? strptimeだっけ?」と毎回検索していました。日付の処理は地味に面倒ですが、一度マスターしてしまえば、業務自動化(スクレイピングデータの整理や、レポートの自動作成など)の強力な武器になります。

この記事では、初心者の方がコピペするだけでそのまま使える「逆引き辞書」として、datetimeモジュールの使い方をギュッとまとめました。


これだけは必須!最初の1行

Pythonで日付を扱うときは、まずこの一行をコードの先頭に書きましょう。

python
from datetime import datetime, timedelta


今この瞬間の時間を取得する

「とりあえず今の時刻を表示したい」という時はこれです。

“`python

現在の日時を取得

now = datetime.now()

print(now)

出力例:2023-10-25 14:30:05.123456

“`


日付を「好きな形式」の文字列に変える (strftime)

APIに送る時や、ファイル名に日付を入れたい時に使います。
strftime = String Format Time(時間を文字列にフォーマットする)と覚えましょう。

“`python
now = datetime.now()

よく使う形式

fmt1 = now.strftime(“%Y/%m/%d %H:%M:%S”) # 2023/10/25 14:30:05
fmt2 = now.strftime(“%Y年%m月%d日”) # 2023年10月25日
fmt3 = now.strftime(“%Y%m%d”) # 20231025(ファイル名によく使う)

print(fmt1)
“`

【よく使う記号まとめ】
%Y:年(4桁)
%m:月(0埋め2桁)
%d:日(0埋め2桁)
%H:時(24時間表記)
%M:分
%S:秒


文字列を「日付データ」に変換する (strptime)

「2023-10-25」というただの文字を、Pythonが計算できる「日付データ」に戻します。
strptime = String Parse Time(文字列を解析して時間にする)という意味です。

“`python
date_str = “2023-10-25 15:00”

第2引数に、元の文字列がどんな形式かを指定するのがコツ!

date_dt = datetime.strptime(date_str, “%Y-%m-%d %H:%M”)

print(type(date_dt))

<class ‘datetime.datetime’> ← これで計算ができるようになる!

“`


日付の計算をする(1日後、1時間前など)

日付の足し算・引き算には timedelta を使います。

“`python
now = datetime.now()

10日後を計算

after_10days = now + timedelta(days=10)

5時間前を計算

before_5hours = now – timedelta(hours=5)

1週間前を計算

last_week = now – timedelta(weeks=1)

print(f”今は {now}”)
print(f”10日後は {after_10days}”)
“`


2つの日付の差分を求める

「締め切りまであと何日?」という計算も簡単です。

“`python
today = datetime.now()
deadline = datetime(2023, 12, 31) # 2023年12月31日

diff = deadline – today

print(f”期限まであと {diff.days} 日です!”)
“`


実務でよく使う!コピペ用便利コード

エンジニアが現場でよく使う「ちょっとした処理」をまとめました。

1. 今日の日付だけ取得(時間は不要なとき)

python
today_date = datetime.now().date()
print(today_date) # 2023-10-25

2. 月末の日付を求める

直接「月末」を出す機能はないので、「来月の1日の1日前」を計算するのが賢いやり方です。
“`python
import datetime

def get_last_day_of_month(year, month):
# 来月の1日を取得
if month == 12:
next_month = datetime.date(year + 1, 1, 1)
else:
next_month = datetime.date(year, month + 1, 1)

# その1日前が今月の月末
return next_month - datetime.timedelta(days=1)

print(get_last_day_of_month(2023, 10)) # 2023-10-31
“`


まとめ:エラーを防ぐコツ

Pythonの日付操作でエラーが出たら、大体はこのどちらかです。

  1. 「文字列」と「日付データ」を混ぜて計算しようとしている
    • strptime で日付データに変換してから計算しましょう。
  2. フォーマットの記号(%Yとか%m)が間違っている
    • 大文字・小文字も区別されるので、この記事の表をチェックしてください。

日付操作ができるようになると、「毎日決まった時間にメールを送る」「古いファイルを自動で削除する」といった効率化ツールが簡単に作れるようになります。

ぜひ今回のコードを自分のプログラムにペタペタ貼り付けて使ってみてください!

コメント

タイトルとURLをコピーしました