時間、分の観点から 2 つの time.Time オブジェクトの差を求める、秒は一般的なタスクです。ただし、Go の時間パッケージは、この計算を実行するメソッドを直接提供しません。
解決策は、Time.Sub() メソッドを使用することです。 time.Duration 値としての 2 つの time.Time オブジェクト。 time.Duration は、ナノ秒の精度で継続時間を表します。
目的の形式 (HH:mm:ss) を取得するには、継続時間の値を指定した Add() メソッドを使用して、新しい time.Time 値を構築します。 :
diff := t2.Sub(t1) formattedDiff := time.Time{}.Add(diff) fmt.Println(formattedDiff.Format("15:04:05"))
これにより、たとえ 1 日未満であっても、必要な形式で差分が出力されます。
時差が 1 日よりも長くなる可能性がある場合、年、月、日の計算が必要となるため、時差の計算はより複雑になります。このような場合、以下のようなヘルパー関数を使用できます。
func diff(a, b time.Time) (year, month, day, hour, min, sec int) { // Calculate the difference in seconds diffSeconds := int(a.Sub(b).Seconds()) // Calculate days and remaining seconds days := diffSeconds / (24 * 3600) remainingSeconds := diffSeconds % (24 * 3600) // Calculate hours and remaining seconds hours := remainingSeconds / 3600 remainingSeconds %= 3600 // Calculate minutes and remaining seconds minutes := remainingSeconds / 60 seconds := remainingSeconds % 60 // Convert days to years, months, and remaining days yearDays := days / 365 yearSeconds := yearDays * 365 * 24 * 3600 months := (days - yearDays*365) / 30 daySeconds := (days - yearDays*365 - months*30) * 24 * 3600 return yearDays, months, days, hours, minutes, seconds }
この関数は、年、月、日、時、分、秒の差を返し、時差を含む計算を可能にします。 24 時間を超えます。
以上が2 つの Go time.Time オブジェクトの差を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。