두 time.Time 개체의 차이를 시, 분 단위로 확인 , 초는 일반적인 작업입니다. 그러나 Go의 time 패키지는 이 계산을 수행하는 방법을 직접 제공하지 않습니다.
해결책은 Time.Sub() 메서드를 사용하는 것입니다. 두 개의 time.Time 개체를 time.Duration 값으로 사용합니다. time.Duration은 나노초 정밀도로 시간 기간을 나타냅니다.
원하는 형식(HH:mm:ss)을 얻으려면 기간 값과 함께 Add() 메서드를 사용하여 새로운 time.Time 값을 구성할 수 있습니다. :
diff := t2.Sub(t1) formattedDiff := time.Time{}.Add(diff) fmt.Println(formattedDiff.Format("15:04:05"))
이렇게 하면 하루 미만이라도 원하는 형식으로 차이가 인쇄됩니다.
시차가 하루보다 길 수 있는 경우 연, 월, 일을 계산해야 하므로 차이 계산이 더 복잡해집니다. 이러한 경우 아래 제공된 것과 같은 도우미 함수를 사용할 수 있습니다.
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시간을 초과했습니다.
위 내용은 두 Go time.Time 개체의 차이를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!