Tarih Komutanlığı 31 Aralık için Yanlış Hafta Sayısı Verdi


21

31 Aralık için hafta numarasını almaya çalıştığımda 1 döndürür. 30 Aralık için hafta numarasını aldığımda, 52 --- --- beklediğim budur. Pazartesi günü doğru. Bu Ubuntu çalıştıran bir RPI üzerinde.

$ date -d "2018-12-30T1:58:55" +"%V%a"

52Sun

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

01Mon

Zaman dizesi olmadan aynı sorun

$ date -d "2018-12-31" +"%V%a"

01Mon

9
"Tarih Komutu 31 Aralık için Yanlış Hafta Sayısı Verdi" - "Yanlış" hangi spesifikasyona göre? Kullandığınız özellikler, kullanım kılavuzunun kullandığı ile aynı datemı?
Jörg W Mittag


2
İlginizi çekebilir Neden MonthCalendar denetimi Romanya'da yanlış hafta sayılarını gösteriyor? Blog yazısı Windows ile ilgilidir, ancak tartışılan konu geneldir (ve karşılaştığınızla aynı gibi görünüyor).
CVn

1
"Bilgisayar yanlış olmalı, çünkü açıkçası bir hata yapmadım!" FORTRAN IV derleyicisinin bir hataya sahip olması gerektiğinden şikayet ettiğim zamanları hatırlatıyor , çünkü ilk basit programımda herhangi bir hata olamaz ...
RonJohn

Yanıtlar:


49

Bu size Pazartesi günü başlayan ISO haftasını veriyor.

ISO hafta tarih sistemi, 1988'den bu yana Uluslararası Standartlar Örgütü (ISO) tarafından yayınlanan (son 2004 yılında revize edilmiştir) ISO 8601 tarih ve saat standardının bir parçası olan etkili bir hafta takvim sistemidir ve bundan önce ISO (R) 2015, 1971'den beri. Bu daha önce "Endüstriyel tarih kodlaması" olarak biliniyordu. Sistem, yılın sıralı haftaları için bir gösterim tanımlayarak Gregoryen takviminin üzerinde bir hafta yılı belirler.


Bir ISO hafta numaralandırma yılı (gayri resmi olarak ISO yılı olarak da adlandırılır) 52 veya 53 tam haftaya sahiptir. Bu, olağan 365 veya 366 gün yerine 364 veya 371 gündür. ISO 8601 bu terimi kullanmasa da, fazladan hafta bazen artık hafta olarak adlandırılır.

Haftalar Pazartesi ile başlar. Her haftanın yılı, Perşembe gününün düştüğü Gregoryen yılıdır. Yılın ilk haftası, bu nedenle, her zaman 4 Ocak içerir. ISO hafta yılı numaralandırması bu nedenle 1 Ocak'a yakın bazı günler için Gregoryen'den biraz farklı.


52. hafta olarak 12/31'i göstermek istiyorsanız %U, ISO standardını kullanmayan şunu kullanmalısınız:

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

Teşekkürler. Aradığım şey buydu. Cal komutuyla çok daha kıvrımlı bir yöntem kullandım.
George Shafer

3

Hafta sayısının tanımı Avrupa ile ABD arasında, muhtemelen ISO ve ANSI standartlarına göre farklıdır. Bu, bir haftanın Pazar - Cumartesi veya Pazartesi - Pazar olmasıyla ilgili olabilir ve bu yine Yahudi ve Rab'bin Günü'nün Hıristiyan tanımına (Sebt-Pazar) ilişkin olabilir.

Avrupa için, 1 numaralı hafta Ocak ayının ilk Perşembe gününü içerir ve bu nedenle yeni yıla ait en az 4 gün (çoğunluk çoğunluğu) içerir (Perş-Cum-Cmt-Paz).

Her neyse, TÜM (!!) hafta sayılarının Avrupa ve ABD arasında +/- 1 farklı olduğu yıllarda, bu çok uluslu şirketlerde zaman çizelgeleri ayarlamakla çok eğlenir. :-)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.