C++ Academy · Ders

Takvim ve Saat Dilimleri

C++20 takvim türlerini kullanın

4. ders / 413 adım

Takvim ve Saat Dilimleri, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.

C++20 Takvim Türleri

C++20, <chrono> için kapsamlı takvim desteği ekledi. Artık yılları, ayları ve günleri tamsayılarla uğraşmak yerine doğrudan türler olarak ifade edebilirsiniz.

  • year, month, day
  • tam bir tarih için year_month_day
#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    year y{2026};
    std::cout << "Year value: " << static_cast<int>(y) << '\n';
    return 0;
}

Takvim Değişmezleri

2026y ve 15d gibi takvim değişmezleri ile std::chrono::May gibi adlandırılmış aylar, tarihlerin doğal okunmasını sağlar.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    auto y = 2026y;
    auto d = 15d;
    std::cout << static_cast<int>(y) << " / " << static_cast<unsigned>(d) << '\n';
    return 0;
}

Tarih Oluşturma

Üç parçayı / işleciyle birleştirerek bir year_month_day oluşturun. Sıralama yıl, ay ve gün şeklindedir.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    year_month_day ymd = 2026y/May/30;
    std::cout << static_cast<int>(ymd.year()) << "-"
              << static_cast<unsigned>(ymd.month()) << "-"
              << static_cast<unsigned>(ymd.day()) << '\n';
    return 0;
}

Tarihleri Doğrulama

Bir year_month_day, gerçek bir takvim tarihi olup olmadığını bilir. Şubat ayının 30'u gibi olanaksız değerleri reddetmek için ok() kullanın.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    year_month_day good = 2026y/February/28;
    year_month_day bad = 2026y/February/30;
    std::cout << std::boolalpha << good.ok() << " " << bad.ok() << '\n';
    return 0;
}

sys_days

Bir tarihi, başlangıçtan bu yana geçen gün sayısını tutan sys_days türüne dönüştürün. Böylece gün hesaplamaları yapabilir ve tarihler arasındaki farkları hesaplayabilirsiniz.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    sys_days a = sys_days{2026y/May/30};
    sys_days b = sys_days{2026y/May/20};
    std::cout << "Days apart: " << (a - b).count() << '\n';
    return 0;
}

Gün Hesaplamaları

Bir sys_days değerine days{n} eklemek tarihi n gün ileri taşır; ardından takvim tarihine geri dönüştürebilirsiniz.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    sys_days start = sys_days{2026y/May/30};
    sys_days later = start + days{10};
    year_month_day ymd = later;
    std::cout << static_cast<unsigned>(ymd.day()) << "/"
              << static_cast<unsigned>(ymd.month()) << '\n';
    return 0;
}

Haftanın Günü

Bir tarihin haftanın hangi gününe denk geldiğini bulmak için sys_days değerini weekday türüne dönüştürün.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    weekday wd{sys_days{2026y/May/30}};
    std::cout << "Weekday index (Sun=0): " << wd.c_encoding() << '\n';
    return 0;
}

Bir Ayın Son Günü

Özel last etiketi, artık yılları otomatik olarak dikkate alarak herhangi bir ayın son gününü hesaplar.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    year_month_day_last eom = 2024y/February/last;
    year_month_day ymd = eom;
    std::cout << "Feb 2024 ends on day " << static_cast<unsigned>(ymd.day()) << '\n';
    return 0;
}

Artık Yıl Denetimi

year türü, bölünebilme kurallarını kendiniz hatırlamak zorunda kalmamanız için is_leap() işlevini sunar.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    std::cout << std::boolalpha;
    std::cout << "2024 leap: " << year{2024}.is_leap() << '\n';
    std::cout << "2026 leap: " << year{2026}.is_leap() << '\n';
    return 0;
}

Zaman Noktasından Tarihe

Bugünün takvim tarihini elde etmek için bir system_clock zaman noktasını days türüne yuvarlayın ve year_month_day türüne dönüştürün.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    auto today = floor<days>(system_clock::now());
    year_month_day ymd = sys_days{today};
    std::cout << "Year is in range: " << (static_cast<int>(ymd.year()) > 2000) << '\n';
    return 0;
}

Saat Dilimleri

C++20 ayrıca std::chrono::zoned_time ve IANA veritabanı aracılığıyla saat dilimleri desteği ekler. Kullanılabilirlik standart kitaplığınıza bağlıdır; ancak bu model, doğru yerel saat gösterimi için bir zaman noktasını adlandırılmış bir saat dilimiyle birleştirir.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    auto now = system_clock::now();
    auto days_part = floor<days>(now);
    std::cout << "Have a UTC time point: " << (days_part.time_since_epoch().count() > 0) << '\n';
    return 0;
}

Kısa Kontrol

C++20 takvim türlerini ne kadar anladığınızı test edin.

Özet

C++20'nin takvim desteği hakkında bilgi edindiniz:

  • / oluşturma işleciyle birlikte year, month, day ve year_month_day
  • ok() doğrulaması ve is_leap() denetimleri
  • gün hesaplamaları ve haftanın gününü bulmak için sys_days
  • ay sonu için last ve zoned_time türüne giriş

Bu bölümle Zaman ve Chrono Kitaplığı kursu tamamlanıyor.

Başlamak ücretsiz

Yapay zeka eğitmeniyle C++ öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
51
Dersler
203

Sıkça Sorulan Sorular

“Takvim ve Saat Dilimleri” dersi ücretsiz mi?

Evet — “Takvim ve Saat Dilimleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.

“Takvim ve Saat Dilimleri” dersinde ne öğreneceğim?

C++20 takvim türlerini kullanın C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C++ Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Takvim ve Saat Dilimleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Süreler ve Saatler
  2. Zaman Noktaları
  3. Kod Performansını Ölçme
  4. Takvim ve Saat Dilimleri
← C++ Academy Sayfasına Dön