Hangi tarihi test etmelisiniz?
Tarih testinin yarısı saati oynatmaktır. Diğer yarısı onu nereye oynatacağınızı bilmektir. Bir çevrimiçi hesap makinesi bugünden doksan gün sonrasının ne olduğunu söyler. Cevabın bir resmî tatil olduğunu ya da çeyreğin son günü olduğunu söylemez.
04/08/2008 yapıştırılıyor ve
biri tahmin edilmek yerine her iki okuma da gösteriliyor.Gerçek tatillerle iş günleri
“On iş günü sonrası” aritmetik değildir - hangi ülkenin takvimine göre saydığınıza bağlıdır. Aynı başlangıç tarihi, aynı on gün, iki farklı cevap:
$ chrono calc --base 2027-09-01T00:00:00 --shift +10bd --calendar us-banking result: 2027-09-16T00:00:00 $ chrono calc --base 2027-09-01T00:00:00 --shift +10bd --calendar pl result: 2027-09-15T00:00:00
Bir gün fark var ve aradaki tarihi sorarsanız hesap makinesi nedenini söyler:
$ chrono calc --base 2027-09-06T00:00:00 --calendar us-banking metadata: weekday Monday business day no (us-banking) holiday Labor Day what this date lands on: public holiday (weekend and holiday marks follow the us-banking calendar)
Amerika Birleşik Devletleri ve Polonya referans takvimleri olarak gelir; ikisi birlikte var olan her kural türünü işletir: sabit tarihler, ayın n’inci belirli hafta günü (örneğin üçüncü Pazartesi), Paskalya’dan hesaplanan tarihler ve Cumartesi’ye denk gelen bir tatilin önceki Cuma gözlemlendiği Amerikan kuralı. Bir ülke eklemek bir veri dosyasıdır, kod değişikliği değil.
Tüm biçimler bir arada
Test edilen uygulama tarihi beklediği biçimde ister. Sizi dönüştürmeye zorlamak yerine hesap makinesi hepsini yazdırır - ve hiçbir standarda uymayanlar için özel bir maske sunar.
$ chrono calc --preset year-2038 --zone +00:00 Chrono Mock - date calculator preset: year-2038 - 2038 boundary explains: Does the app survive the 32-bit Unix time boundary (2038-01-19T03:14:07Z)? result: 2038-01-19T03:14:07 formats: ISO date 2038-01-19 ISO datetime 2038-01-19T03:14:07+00:00 US 01/19/2038 PL 19.01.2038 epoch (s) 2147483647 epoch (ms) 2147483647000 FILETIME 137919572470000000 RFC 1123 Tue, 19 Jan 2038 03:14:07 GMT ... what this date lands on: at or past the 2038-01-19T03:14:07Z 32-bit time_t limit (Y2038)
O epoch değeri tesadüf değil - 2147483647, işaretli 32 bitlik bir tam sayının
tutabileceği en büyük sayıdır; bu tarihin önemli olmasının bütün nedeni de budur.
Bir tarihi geriye doğru okumak
Ters yön de aynı derecede yararlıdır: bir günlükten bir tarih yapıştırın ve ne olduğunu öğrenin.
Biçim belirsiz olduğunda - ve 04/08 dünyanın yarısında belirsizdir -
biri tahmin edilmek yerine her iki okuma da gösterilir, çünkü ilk hata raporu
tam da tahminden doğmuştu.
$ chrono calc --analyze 04/08/2027 Chrono Mock - date analysis input: 04/08/2027 (ambiguous - month/day order differs by locale) US MM/DD/YYYY: 2027-04-08 (Thursday) PL DD/MM/YYYY: 2027-08-04 (Wednesday)
Dört ay arayla ve farklı haftanın günlerinde. Bir ISO tarihi belirsiz değildir ve öyle okunur; hiç tarih olmayan bir şey ise tahmin edilmek yerine reddedilir.
Bir cümleden değil, adımlardan kurulur
Bir an, bir başlangıç noktası artı adımlardır ve ara sonuç her birinden sonra gösterilir; böylece şaşırtıcı bir sonuç üreten bir ifade size nerede saptığını gösterir. Beş tür adım: bir birimle kaydırma, günün saatini ayarlama, bir dönem sınırına atlama, en yakın iş gününe geçme ve başka bir saat diliminde yeniden ifade etme.
# Bir yıl dönmeden önceki son saniye chrono calc --base today --snap eoy # Doksan iş günü sonrası, Amerikan bankacılık takviminde chrono calc --base today --shift +90bd --calendar us-banking # On sekiz yıl ve bir gün geriye, bir yaş kontrolü için chrono calc --base today --shift -18y --shift -1d
Hesaplanan herhangi bir tarih doğrudan bir değişiklik oturumuna girer ve
--json aynı sonucu makine biçiminde verir.
Test etmeye değer tarihler →