Déterminer la différence entre deux objets time.Time en termes d'heures, de minutes , et les secondes sont une tâche courante. Cependant, le package time de Go ne fournit pas directement de méthode pour effectuer ce calcul.
La solution réside dans l'utilisation de la méthode Time.Sub(), qui renvoie la différence entre deux objets time.Time en tant que valeur time.Duration. time.Duration représente une durée de temps avec une précision de la nanoseconde.
pour obtenir le format souhaité (HH:mm:ss), nous pouvons construire une nouvelle valeur time.Time en utilisant la méthode Add() avec la valeur de durée :
diff := t2.Sub(t1) formattedDiff := time.Time{}.Add(diff) fmt.Println(formattedDiff.Format("15:04:05"))
Cela imprimera la différence dans le format souhaité, même si c'est moins d'une journée.
Si le décalage horaire peut être supérieur à un jour, le calcul de la différence devient plus complexe, car il implique des calculs avec des années, des mois et des jours. Dans de tels cas, une fonction d'assistance comme celle fournie ci-dessous peut être utilisée :
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 }
Cette fonction renvoie la différence en années, mois, jours, heures, minutes et secondes, permettant des calculs avec des décalages horaires. dépassant 24 heures.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!