20250117

はい、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

説明

  1. date -d "$input_date + 1 day":
  • このコマンドは与えられた日付の翌日を計算します。GNU date コマンドは内部的に正しい日付計算を行うので、月またぎや年またぎ、さらにうるう年の処理も自動的に行います。
  1. 入力の検証:
  • スクリプトは引数として日付が与えられているかをチェックし、適切なメッセージを表示します。

これにより、月またぎや年またぎにも対応した、汎用的な日付の翌日計算スクリプトが完成します。

コメント

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