Linux System Administration

Linuxで昨日の日付を正確に取得する

Spread the love

Linuxスクリプトや自動化において、昨日の日付を取得することはよくある作業です。このガイドでは、組み込みのdateコマンドを使用した2つの信頼性の高い方法を紹介し、タイムゾーンの処理に関する考慮事項について説明します。

目次

dateコマンドの使用

最も簡単な方法は、dateコマンドの組み込みの「昨日」機能を直接使用することです。

date -d "yesterday" +%Y-%m-%d

このコマンドは、以下のとおりです。

  • date: dateコマンドを呼び出します。
  • -d "yesterday": 昨日の日付を指定します。
  • +%Y-%m-%d: 出力をYYYY-MM-DD形式でフォーマットします。(例: +%F, +%Y/%m/%d, +%d/%m/%Y などでカスタマイズできます)。

例: 今日が2024-10-27の場合、出力は2024-10-26となります。

より正確なタイムゾーンの処理

異なるタイムゾーン間で正確な日付計算が必要なスクリプトの場合、より堅牢な方法が必要です。前述の方法で通常は十分ですが、サマータイムの切り替えにより不整合が生じる可能性があります。この改良されたアプローチはエポック時間を使用します。

date -d "@$(($(date +%s) - 86400))" +%Y-%m-%d

このコマンドは、以下のとおりです。

  • date +%s: エポック(1970年1月1日00:00:00 UTC)からの経過秒数を取得します。
  • $(...): コマンド置換で、内部コマンドの出力を取得します。
  • - 86400: 86400秒(1日)を引きます。
  • @(...): dateに先行する値をエポックからの経過秒数として解釈させます。
  • date -d "..." +%Y-%m-%d: 結果のエポック時間をYYYY-MM-DD形式でフォーマットします。

この方法は、エポック時間を直接操作することで、タイムゾーン関連の曖昧さを回避し、精度を確保します。

ほとんどの場合、date -d "yesterday"を使用する最初の方法は十分です。ただし、重要なアプリケーションやタイムゾーンを跨ぐスクリプトでは、2番目の方法の方が信頼性の高いソリューションとなります。出力形式は、それぞれの要件に合わせて調整してください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です