日付に日数を追加する: タイム ゾーンを効果的に移動する
タイム ゾーンの微妙な違いを考慮しながら日付に日数を追加するのは難しい場合があります。この問題に対処するための一般的なアプローチは、既存の日付に期間を追加することです。ただし、タイム ゾーンの動作が独特な地域では、この方法で常に信頼できる結果が得られるとは限りません。
もう 1 つの方法は、time.Date() 関数を使用することです。時、分、秒、およびナノ秒のコンポーネントを 0 に設定し、特定のタイム ゾーンを指定すると、指定したゾーンで翌日の午前 0 時に始まる新しい時刻値を作成できます。
の場合例:
givenDate := time.Now() loc := time.UTC t2 := time.Date(givenDate.Year(), givenDate.Month(), givenDate.Day()+1, 0, 0, 0, 0, loc)
このコードでは、t2 は UTC (または loc で指定された他のタイムゾーン) の翌日の午前 0 時を表します。
さらに高速なアプローチは次のようになります。次のように、time.Date() を 1 回の呼び出しで使用して日付コンポーネントを取得します。
y, m, d := givenDate.Date() t2 := time.Date(y, m, d+1, 0, 0, 0, 0, loc)
time.Date() が安全である理由:
time.Date() 関数は、結果の日付が指定されたタイム ゾーン内で正しく解釈されることを保証します。タイムゾーンの変更と夏時間への移行を処理し、翌日の午前 0 時に一貫した表現を生成します。
以上がタイムゾーンを移動しながら日付に正確に日数を追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。