はい、GNU date コマンドは月またぎや年またぎにも正しく対応します。以下にその確認のための例をいくつか示します。
月またぎの例
#!/bin/sh
# 2023年10月31日の翌日を計算
input_date="20231031"
next_day=$(date -d "$input_date + 1 day" +"%Y%m%d")
echo "Next day: $next_day" # 出力: Next day: 20231101
年またぎの例
#!/bin/sh
# 2023年12月31日の翌日を計算
input_date="20231231"
next_day=$(date -d "$input_date + 1 day" +"%Y%m%d")
echo "Next day: $next_day" # 出力: Next day: 20240101
うるう年の例
#!/bin/sh
# 2020年2月28日の翌日(2020年はうるう年)
input_date="20200228"
next_day=$(date -d "$input_date + 1 day" +"%Y%m%d")
echo "Next day: $next_day" # 出力: Next day: 20200229
コード全体
これらの例を組み合わせた汎用スクリプトも可能です。
#!/bin/sh
# 日付を引数から受け取る
input_date=$1
# 日付が引数として与えられているかどうかをチェック
if [ -z "$input_date" ]; then
echo "Usage: $0 yyyymmdd"
exit 1
fi
# 入力された日付の翌日を計算
next_day=$(date -d "$input_date + 1 day" +"%Y%m%d")
# 結果を表示
echo "Input date: $input_date"
echo "Next day: $next_day"
実行例
このスクリプトを使って、さまざまな日付を引数として渡すことができます。例えば:
./script.sh 20231031
# 出力:
# Input date: 20231031
# Next day: 20231101
./script.sh 20231231
# 出力:
# Input date: 20231231
# Next day: 20240101
./script.sh 20200228
# 出力:
# Input date: 20200228
# Next day: 20200229
説明
date -d "$input_date + 1 day":
- このコマンドは与えられた日付の翌日を計算します。GNU
dateコマンドは内部的に正しい日付計算を行うので、月またぎや年またぎ、さらにうるう年の処理も自動的に行います。
- 入力の検証:
- スクリプトは引数として日付が与えられているかをチェックし、適切なメッセージを表示します。
これにより、月またぎや年またぎにも対応した、汎用的な日付の翌日計算スクリプトが完成します。

コメント