GNU/Linux >> Tutoriels Linux >  >> Linux

La commande de date donne le mauvais numéro de semaine pour le 31 décembre

Cela vous donne la semaine ISO qui commence un lundi.

Le système de date de semaine ISO est en fait un système de calendrier de semaine bissextile qui fait partie de la norme de date et d'heure ISO 8601 publiée par l'Organisation internationale de normalisation (ISO) depuis 1988 (dernière révision en 2004) et, avant cela, il a été défini dans ISO (R) 2015 depuis 1971. Il est utilisé (principalement) dans le gouvernement et les entreprises pour les exercices fiscaux, ainsi que pour le chronométrage. Ceci était auparavant connu sous le nom de "codage de date industriel". Le système spécifie une année hebdomadaire au-dessus du calendrier grégorien en définissant une notation pour les semaines ordinales de l'année.


Une année de numérotation des semaines ISO (également appelée année ISO de manière informelle) compte 52 ou 53 semaines complètes. C'est 364 ou 371 jours au lieu des 365 ou 366 jours habituels. La semaine supplémentaire est parfois appelée semaine bissextile, bien que la norme ISO 8601 n'utilise pas ce terme.

Les semaines commencent le lundi. L'année de chaque semaine est l'année grégorienne dans laquelle tombe le jeudi. La première semaine de l'année contient donc toujours le 4 janvier. La numérotation ISO de l'année de la semaine s'écarte donc légèrement du grégorien pour certains jours proches du 1er janvier.

Si vous souhaitez afficher le 31/12 comme semaine 52, vous devez utiliser %U , qui n'utilise pas la norme ISO :

$ date -d "2018-12-31T1:58:55" +"%V%a"
01Mon
$ date -d "2018-12-31T1:58:55" +"%U%a"
52Mon

La définition du numéro de semaine est différente entre l'Europe et les États-Unis, probablement ISO par rapport aux normes ANSI. Cela peut être lié au fait qu'une semaine est dimanche--samedi ou lundi--dimanche, et cela peut encore être lié à la définition juive contre chrétienne du jour du Seigneur (sabbat contre dimanche).

Pour l'Europe, la semaine numéro 1 contient le premier jeudi de janvier, et donc elle contient un minimum de 4 jours (c'est-à-dire une majorité) appartenant à la nouvelle année (jeu-vendredi-sam-dim).

Quoi qu'il en soit, ces années où TOUS (!!) les numéros de semaine sont différents de +/- 1 entre l'Europe et les États-Unis, cela donne beaucoup de plaisir à établir des horaires dans des entreprises multinationales. :-)


Linux
  1. Comment exécuter la commande Ping uniquement pour un nombre N de paquets

  2. date Exemples de commandes sous Linux

  3. Imprimer la date du lundi de la semaine en cours (en bash)

  4. Existe-t-il une commande pour revenir en arrière d'un certain nombre d'étapes dans un répertoire, sans utiliser cd ?

  5. Comment déterminer le numéro de la semaine du mois

12 exemples de commandes IP pour les utilisateurs Linux

Bash pour la boucle

Commande de date sous Linux

Astuces de formatage pour la commande Linux date

Exa - Un remplacement moderne pour la commande ls

7 exemples de commande de date sous Linux