昔は10行、今は1行── 翌日 を求めるコードの進化史。

こんにちは、阿久梨絵です!
日付の「 翌日 を求める」──それだけで、かつては例外処理の嵐だった。
月末、2月、うるう年、年末年始…人間にとっては自然な感覚でも、プログラムにとっては地雷原

でも今は違う
ライブラリと日付オブジェクトの進化で、翌日計算は“考えなくていい”時代に突入している。

昔:手作業で地雷を踏む日々

かつての日付処理は、こんな感じだった。

python
# 例:Pythonで翌日を求める(昔のやり方)
def get_next_day(year, month, day):
# 月ごとの日数
days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

# うるう年判定
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
days_in_month[1] = 29

day += 1
if day > days_in_month[month – 1]:
day = 1
month += 1
if month > 12:
month = 1
year += 1

return year, month, day

うるう年を自分で判定
月末を自分で判定
年末の繰り上がりも自分で処理

つまり、人間がカレンダーを見て考えることを、全部コードに書く必要があった。

今:日付オブジェクトが全部やってくれる

現代の言語やライブラリは、日付を「計算可能なオブジェクト」として扱う。
翌日を求めるなら、たったこれだけ

#Python(`datetime`)

from datetime import datetime, timedelta

today = datetime(2025, 2, 28)
tomorrow = today + timedelta(days=1)
print(tomorrow.strftime(‘%Y-%m-%d’)) # → 2025-03-01

#JavaScript(`Date`)

const today = new Date(‘2025-02-28’);
const tomorrow = new Date(today);
tomorrow.setDate(today.getDate() + 1);
console.log(tomorrow.toISOString().split(‘T’)[0]); // → 2025-03-01

#PHP(`DateTime`)

$today = new DateTime(‘2025-02-28’);
$today->modify(‘+1 day’);
echo $today->format(‘Y-m-d’); // → 2025-03-01

どれも月末・うるう年・年末年始を自動で処理してくれる
しかも、コードが圧倒的に読みやすい

さらに進化:人間っぽい日付処理ライブラリ

翌日」だけじゃなく、「月末」「第2火曜日」「3営業日後」など、人間の感覚に近い処理をしたいなら、以下のライブラリが便利。

言語ライブラリ特徴
JavaScriptdate-fns軽量・関数型・読みやすい
JavaScriptluxonタイムゾーン・フォーマットに強い
Pythonpendulumdatetime互換・自然言語っぽいAPI
PHPCarbonDateTime拡張・直感的な操作が可能

日付処理は“考えない”時代へ

「翌日を簡単に求める」処理がスマートに書ける言語は、今どきのほぼすべての主要言語です。特に以下の言語では、標準ライブラリや人気の外部ライブラリが充実していて、月末・うるう年・年末年始などの例外を自動で処理してくれます。

日付処理が“賢い”言語一覧

言語標準ライブラリ名外部ライブラリ(おすすめ)備考
Pythondatetime, calendarpendulum, arrowtimedeltaで翌日が簡単に計算可能
JavaScriptDatedate-fns, luxon, dayjssetDate()で自動繰り上がり処理
PHPDateTimeCarbonmodify('+1 day')が直感的
RubyDate, TimeChronic, ActiveSupportRails環境なら特に強力
JavaLocalDate, CalendarJoda-Time(古いが有名)plusDays(1)で翌日処理
C# (.NET)DateTimeNodaTimeAddDays(1)でOK
GotimeAddDate(0, 0, 1)で翌日
SwiftDate, CalendarCalendar.current.date(byAdding:)
Rustchronodate + Duration::days(1)

特徴的なポイント

どの言語も「日付オブジェクト+加算」で翌日が求まる
月末やうるう年の判定は不要(ライブラリが吸収してくれる)
外部ライブラリを使えば、さらに人間っぽい操作が可能(例:「第2火曜日」「3営業日後」など)

まとめ

翌日 を求める」──それだけで、かつてはコードの地雷原だった。
日付は“計算するもの”ではなく、“任せるもの”になった。

現代の言語やライブラリは、日付を「オブジェクト」として扱い、
加算・比較・フォーマット・タイムゾーンまで、人間の感覚に近い操作を可能にしてくれます。
阿久梨絵でした!

上部へスクロール
Verified by MonsterInsights