Kitaplar / Yöntem Birimler ve Araçlar Kılavuzu / 4. Takvim: tarih ve saat
4. Takvim: tarih ve saat
Takvim biriminde zaman, 1 Ocak 1970’ten beri geçen saniye sayısıdır (Unix saniyesi) ve bir tamsayıyla tutulur. Bu sayede iki tarih < ile karşılaştırılır, sıralanır, birbirinden çıkarılır. Hesaplar UTC’de yapılır; yerel saati yazmak için YerelFark (dakika) eklenir.
Yöntem
program SınavTakvimi
{ Takvim birimi: tarih okuma, yazma ve gün hesabı. }
kullan Takvim
değişken
bugün, sınav, teslim: tamsayı
başla
BenzetimZamanı(TarihYap(2026, 11, 10, 9, 0, 0), 180) { testler için sabit saat; UTC+3 }
bugün := Şimdi
sınav := TarihOku('15.01.2027', 'GG.AA.YYYY')
yaz('Bugün : ' + TarihYaz(bugün + YerelFark * 60, 'G AAAA YYYY GGGG, SS:DD'), 1)
yaz('Sınav : ' + TarihYaz(sınav, 'G AAAA YYYY GGGG') + ' — ' + GünFarkı(bugün, sınav) + ' gün kaldı', 1)
teslim := AyEkle(GünBaşı(bugün), 1)
yaz('Ödev teslimi (bir ay sonra): ' + TarihYaz(teslim, 'GG.AA.YYYY') + ', ' + HaftaNo(teslim) + '. hafta', 1)
eğer HaftaGünü(teslim) > 5 ise yaz(' Hafta sonuna denk geliyor; pazartesi: ' + TarihYaz(GünEkle(teslim, 8 - HaftaGünü(teslim)), 'GG.AA.YYYY'), 1)
yaz('Şubat 2028 ' + AydakiGünSayısı(2028, 2) + ' gün; 2028 artık yıl mı: ' + Metin(ArtıkYıl(2028)), 1)
bitir.Çıktı
Bugün : 10 Kasım 2026 Salı, 12:00
Sınav : 15 Ocak 2027 Cuma — 66 gün kaldı
Ödev teslimi (bir ay sonra): 10.12.2026, 50. hafta
Şubat 2028 29 gün; 2028 artık yıl mı: doğruKalıplar. TarihYaz ve TarihOku aynı simgeleri kullanır:
| Simge | Anlamı | Örnek |
|---|---|---|
YYYY, YY |
Yıl | 2026, 26 |
AA, A |
Ay (iki haneli, yalın) | 03, 3 |
AAAA, AAA |
Ay adı, kısa ay adı | Mart, Mar |
GG, G |
Gün (iki haneli, yalın) | 05, 5 |
GGGG, GGG |
Gün adı, kısa gün adı | Perşembe, Per |
SS, DD, SN |
Saat, dakika, saniye | 09, 05, 30 |
Küçük harfler ve noktalama olduğu gibi yazılır. Büyük harfli düz metin köşeli ayraca alınır: '[Saat] SS:DD'. Kalıp verilmezse TarihOku 2026-11-10, 2026-11-10 19:30 ve 2026-11-10 19:30:00 biçimlerini tanır.
| Üye | Ne yapar |
|---|---|
Şimdi, YerelFark |
Şu an (Unix saniyesi) ve yerel saatin UTC’den farkı (dakika) |
TarihYap(yıl, ay, gün [, saat, dakika, saniye]) |
Tarihten zaman üretir; geçersiz tarihte hata verir |
Parçala(zaman) |
yıl, ay, gün, saat, dakika, saniye, haftaGünü, yılGünü içeren sözlük |
TarihYaz(zaman [, kalıp]), TarihOku(metin [, kalıp]) |
Metne çevirir, metinden okur |
SaniyeEkle, GünEkle, AyEkle, YılEkle |
Zamana ekler (eksi sayı çıkarır); 31 Ocak + 1 ay = şubatın son günü |
GünFarkı(başlangıç, bitiş), GünBaşı(zaman) |
Takvim günü farkı; günün 00:00’ı |
HaftaGünü (1 = Pazartesi), HaftaNo (ISO haftası), GünAdı, AyAdı |
Takvim bilgisi |
ArtıkYıl(yıl), AydakiGünSayısı(yıl, ay), GeçerliTarih(yıl, ay, gün) |
Denetimler |
BenzetimZamanı(zaman [, fark]) |
Testler için saati sabitler |
Birim 1–9999 yılları arasında çalışır. Saat dilimi adları ve yaz saati kuralları yoktur; yalnızca UTC ve dakika cinsinden sabit bir fark vardır.