>백엔드 개발 >Golang >두 Go time.Time 개체의 차이를 계산하는 방법은 무엇입니까?

두 Go time.Time 개체의 차이를 계산하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-03 22:34:12654검색

How to Calculate the Difference Between Two Go time.Time Objects?

두 Time.Time 개체의 차이 계산

문제:

두 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.