Go での日付と時刻の比較
日付と時刻に基づいてデータを並べ替える場合、正確な比較を実行することが不可欠です。 Go は、time パッケージを通じて日付と時刻を操作するための堅牢なオプションを提供します。
time パッケージは、即時比較のためのいくつかのメソッド (Before、After、Equal) を提供します。 2 つの時刻を比較することで、それらの時間的関係を確立できます。さらに、Sub メソッドでは 2 つの瞬間間の継続時間を計算しますが、Add メソッドでは時間に継続時間を追加して、新しい時間を算出できます。
時間インスタント比較
たとえば、次の例を考えてみましょう。
package main import ( "fmt" "time" ) func main() { start, _ := time.Parse(time.RFC822, "01 Jan 15 10:00 UTC") end, _ := time.Parse(time.RFC822, "01 Jan 16 10:00 UTC") in, _ := time.Parse(time.RFC822, "01 Jan 15 20:00 UTC") out, _ := time.Parse(time.RFC822, "01 Jan 17 10:00 UTC") if in.Before(end) && in.After(start) { fmt.Println(in, "is between", start, "and", end, ".") } if !in.Before(end) || !in.After(start) { fmt.Println(out, "is not between", start, "and", end, ".") } }
この例では、start と 2 つの時刻を解析します。 end、時間範囲を表します。次に、追加の 2 つの時刻をインとアウトで解析し、それらが指定された範囲内にあるかどうかを確認します。 Before メソッドと After メソッドを使用して瞬間を比較することで、指定された時間が目的の時間間隔内であるかどうかを確認できます。
時間範囲の検証
日付が一致する場合質問で述べたように、範囲が日にまたがる場合は、追加のチェックを検討する必要がある場合があります。このようなシナリオを処理する方法を示す例を次に示します。
package main import ( "fmt" "time" ) func inTimeSpan(start, end, check time.Time) bool { if start.After(end) { return check.After(start) || check.Before(end) } return check.After(start) && check.Before(end) } func main() { start, _ := time.Parse(time.RFC822, "01 Jan 15 22:00 UTC") end, _ := time.Parse(time.RFC822, "01 Jan 16 04:59 UTC") in, _ := time.Parse(time.RFC822, "01 Jan 16 02:00 UTC") out, _ := time.Parse(time.RFC822, "01 Jan 17 10:00 UTC") if inTimeSpan(start, end, in) { fmt.Println(in, "is within the time range from", start, "to", end, ".") } if !inTimeSpan(start, end, out) { fmt.Println(out, "is not within the time range from", start, "to", end, ".") } }
この例では、inTimeSpan 関数は、開始時刻が終了時刻よりも大きくなる可能性を考慮して、日をまたぐ時間範囲を処理します。それに応じて比較を調整し、チェック時間が指定された時間範囲内にあるかどうかを正確に判断します。
日時の比較に時間パッケージとそのメソッドを利用することで、時間と時間に基づいてデータを効果的に並べ替えたりフィルタリングしたりできます。 Go の日付間隔
以上がGo で日付と時刻の範囲を効率的に比較および検証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。