「10/11」は何月何日?|日付が混ざったCSVを一括変換する前に

記事
IT・テクノロジー
毎月届くCSVの日付が、今月だけ「2026/10/02」になっている。別のファイルには「10/11/2026」もある。全部まとめて変換したくなりますが、見た目の区切りをそろえるだけでは、正しい日付になったか分かりません。

先に決めたいのは「どの書き方を受け付けるか」です。意味を確定できない値を確認用に分けると、日付を間違えたまま月次集計へ入れるのを防げます。

■ 同じ日付と決められるもの、決められないもの

今回の入力は次の5件です。

2026-10-01
2026/10/02
2026-02-30
10/11/2026
空欄

年が先頭にある上の2件は、今回のルールなら「2026-10-01」「2026-10-02」に統一できます。

一方、「2026-02-30」は存在しない日です。「10/11/2026」は、月・日・年なら10月11日、日・月・年なら11月10日になります。元のシステムの書式が分からない段階で、どちらかに決めてはいけません。空欄も今日の日付で埋めず、空欄だった事実を残します。

■ 変換の前に用意する3列

元の日付/変換後の日付/確認理由

元の日付は上書きせず、そのまま残します。変換できなかったものは「変換後の日付」を空欄にして、確認理由を付けます。単に空欄へ置き換えると、最初から空欄だった行と変換に失敗した行の区別がつきません。

今回なら、次の出力を目標にします。

2026-10-01 → 2026-10-01/採用
2026/10/02 → 2026-10-02/採用
2026-02-30 → 未確定/存在しない日付
10/11/2026 → 未確定/年月日の順序を確認
空欄 → 未確定/未入力
本文説明図.png
説明図:日付5件を採用2件と要確認3件に分ける。理由は入力例に沿った説明。

■ 実際に進める順番

1.入力元に、年月日の順序を確認する

「普段はこの順」と推測せず、出力仕様や入力ルールを確かめます。複数の提供元があるなら、提供元ごとにルールを分けます。

2.受け付ける書式を絞る

この例では「年-月-日」「年/月/日」の2種類です。両方とも年が先頭という条件にします。時刻付き、和暦、表計算の日付番号などは、この条件の外です。

3.日付として存在するかを調べる

区切り文字の置換だけでは、2月30日も残ってしまいます。年月日として検証し、存在しない日は確認へ回します。

4.採用と要確認の件数を足す

今回の結果は採用2件、要確認3件、合計5件です。変換できた行だけを書き出す場合も、要確認の3件は別に残します。行が黙って消える作りにはしません。

■ 確認結果

Python 3.12のdatetime.strptimeで2種類の書式を順番に照合しました。採用2件、要確認3件となり、2月30日は採用されませんでした。この検証は日付の判定処理です。Excelやスプレッドシートが自動変換した後の復元を確かめたものではありません。

参考資料:Python 3.12ドキュメント「datetime.datetime.strptime」

■ 変換後に見たい場所

月初・月末、うるう年の2月、空欄、提供元が変わる行を重点的に見ます。帳票の日付表示がそろっていても、月と日が逆になっていたら月次集計は違ってしまいます。

同じ修正を毎月繰り返すなら、「受け付ける書式」「確認に回す条件」「元の値を残す列」を決めたうえで、変換と確認用一覧の出力をまとめると作業を減らせます。

CSVの整形・集計の相談先:

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す