Maison > développement back-end > Golang > Comment calculer la plage de dates pour un numéro de semaine donné dans Go ?

Comment calculer la plage de dates pour un numéro de semaine donné dans Go ?

Linda Hamilton
Libérer: 2024-12-05 02:23:10
original
875 Les gens l'ont consulté

How to Calculate the Date Range for a Given Week Number in Go?

Plage de dates par numéro de semaine dans Go

Étant donné le numéro de semaine obtenu à l'aide de la fonction Semaine fournie, cet article explore comment déterminer le numéro de semaine correspondant plage de dates commençant le dimanche.

Avant-propos : Semaine ISO et personnalisation Manipulation

Il est important de noter que la semaine ISO standard commence lundi. Pour s'adapter à cette convention, l'approche suivante gère les semaines commençant le lundi ou le dimanche.

Détermination de la plage hebdomadaire

Pour déterminer la plage de dates d'une semaine, nous :

  1. Commencez à partir du milieu de l'année (1er juillet).
  2. Alignez-vous sur le premier jour de la semaine (lundi par défaut).
  3. Obtenez le numéro de semaine de cette valeur temporelle.
  4. Corrigez en ajoutant ou en soustrayant des jours en fonction de la différence de semaine.

Mise en œuvre :

func WeekStart(year, week int) time.Time {
    t := time.Date(year, 7, 1, 0, 0, 0, 0, time.UTC)
    if wd := t.Weekday(); wd == time.Sunday {
        t = t.AddDate(0, 0, -6)
    } else {
        t = t.AddDate(0, 0, -int(wd)+1)
    }
    _, w := t.ISOWeek()
    t = t.AddDate(0, 0, (week-w)*7)
    return t
}
Copier après la connexion

Exemple Utilisation :

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
Copier après la connexion

Gestion des semaines hors plage :

Cette implémentation gère les semaines hors plage avec élégance, les interprétant comme des semaines de l'année précédente ou suivante.

Déterminer la fin de Semaine :

Pour obtenir le dernier jour de la semaine, ajoutez simplement 6 jours au premier jour de la semaine :

func WeekRange(year, week int) (start, end time.Time) {
    start = WeekStart(year, week)
    end = start.AddDate(0, 0, 6)
    return
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal