Introduction
Déterminer la plage de dates correspondant à un numéro de semaine donné peut être une exigence courante dans de nombreuses applications. Bien que Golang fournisse une fonction pratique pour obtenir le numéro de la semaine, il lui manque un mécanisme intégré pour récupérer la plage de dates correspondante. Cet article présente une solution Golang pratique pour résoudre ce problème.
Implémentation de fonctions personnalisées
Pour établir la plage de dates d'une semaine spécifique, nous devons effectuer les étapes suivantes :
Sur la base de ceux-ci principes, nous pouvons créer une fonction personnalisée appelée WeekStart() comme suit :
func WeekStart(year, week int) time.Time { // Start from middle of the year t := time.Date(year, 7, 1, 0, 0, 0, 0, time.UTC) // Align to Monday if t.Weekday() == time.Sunday { t = t.AddDate(0, 0, -6) } else { t = t.AddDate(0, 0, -int(t.Weekday())+1) } // Adjust for week difference y, w := t.ISOWeek() t = t.AddDate(0, 0, (week-w)*7) return t }
Utilisation et exemple
Pour utiliser cette fonction, indiquez l'année et l'année souhaitée. numéro de la semaine comme arguments :
fmt.Println(WeekStart(2018, 1)) // Output: 2018-01-01 00:00:00 +0000 UTC fmt.Println(WeekStart(2018, 2)) // Output: 2018-01-08 00:00:00 +0000 UTC
Récupération du dernier jour du Semaine
Si nous avons besoin à la fois du premier et du dernier jour de la semaine, nous pouvons étendre la fonction pour renvoyer la date de fin :
func WeekRange(year, week int) (start, end time.Time) { start = WeekStart(year, week) end = start.AddDate(0, 0, 6) return }
Cette fonction étendue permet l'utilisation suivante :
fmt.Println(WeekRange(2018, 1)) // Output: 2018-01-01 00:00:00 +0000 UTC 2018-01-07 00:00:00 +0000 UTC fmt.Println(WeekRange(2018, 2)) // Output: 2018-01-08 00:00:00 +0000 UTC 2018-01-14 00:00:00 +0000 UTC
Cette implémentation personnalisée vous permet de récupérer sans effort la plage de dates correspondant à un numéro de semaine donné, ce qui en fait un outil inestimable pour les manipulations de calendrier et l'analyse des données dans Golang candidatures.
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!