CodeBlanks Logo Icon CodeBlanks

Tarih yardımcıları

Tarih işleme fonksiyonlarını eklersin.

Tarih yardımcıları

Üçüncü yardımcımız bir tarih biçimlendirici: formatDate. Bu metod yıl, ay ve gün değerlerini alıp YYYY-MM-DD biçiminde bir dize döndürür. ISO 8601 standardına uyan bu biçim, veri alışverişinde yaygındır.

Örnek: static std::string formatDate(int year, int month, int day). Gövdesinde std::to_string ile sayıları dizeye çeviririz. Ay ve gün tek haneliyse başına sıfır ekleriz: "0" + std::to_string(month). Sonuç: Helpers::formatDate(2024, 3, 15) çağrısı "2024-03-15" döndürür. Bu metod, log kayıtları ve raporlar için kullanışlıdır.

std::to_string ile dönüşüm

Bir int değerini dizeye çevirmek için std::to_string kullanılır. Örnek: std::to_string(2024) ifadesi "2024" döndürür. Dizeleri + ile birleştirebilirsin.

Ay ve gün için tek haneli durumlarda sıfır eklemek gerekir. Mantık: std::string m = std::to_string(month); if (m.length() == 1) m = "0" + m;. Böylece 3 → "03", 12 → "12" olur. Son olarak parçaları tirele birleştiririz: std::to_string(year) + "-" + m + "-" + d. Bu, deterministik bir çıktı üretir.

Uygulama formatDate metodunu ekle ve çağır

Önceki dersin çözümünü al (Helpers sınıfında capitalize ve clamp var). public: altına static std::string formatDate(int year, int month, int day) metodunu ekle. Gövdesinde ay ve gün için tek haneliyse sıfır ekle ve std::to_string(year) + "-" + m + "-" + d döndür. main içinde clamp çağrısından sonra std::cout << std::endl << Helpers::formatDate(2024, 3, 15); ekle.

Başlangıç kodu

main.cpp
#include <iostream>
#include <string>
#include <cctype>

class Helpers {
public:
    static std::string capitalize(std::string text) {
        if (text.empty()) return text;
        text[0] = std::toupper(text[0]);
        return text;
    }
    static int clamp(int value, int min, int max) {
        if (value < min) return min;
        if (value > max) return max;
        return value;
    }
};

int main() {
    std::cout << "Hazır" << std::endl;
    std::cout << Helpers::capitalize("merhaba") << std::endl;
    std::cout << Helpers::clamp(15, 0, 10);
    // formatDate metodunu ekle ve çağır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <string>
#include <cctype>

class Helpers {
public:
    static std::string capitalize(std::string text) {
        if (text.empty()) return text;
        text[0] = std::toupper(text[0]);
        return text;
    }
    static int clamp(int value, int min, int max) {
        if (value < min) return min;
        if (value > max) return max;
        return value;
    }
    static std::string formatDate(int year, int month, int day) {
        std::string m = std::to_string(month);
        if (m.length() == 1) m = "0" + m;
        std::string d = std::to_string(day);
        if (d.length() == 1) d = "0" + d;
        return std::to_string(year) + "-" + m + "-" + d;
    }
};

int main() {
    std::cout << "Hazır" << std::endl;
    std::cout << Helpers::capitalize("merhaba") << std::endl;
    std::cout << Helpers::clamp(15, 0, 10) << std::endl;
    std::cout << Helpers::formatDate(2024, 3, 15);
    return 0;
}

Beklenen çıktı

Hazır
Merhaba
10
2024-03-15

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Çağrıyı çıktısına eşle

Kavram Anlamı
formatDate(2024, 3, 15) "2024-03-15"
formatDate(2024, 12, 1) "2024-12-01"
formatDate(2024, 1, 5) "2024-01-05"
formatDate(2024, 10, 25) "2024-10-25"

2 Hangisi ISO 8601 tarih biçimidir?

  • "15/03/2024"
  • "15-03-2024"
  • "03/15/2024"
  • "2024-03-15" Doğru cevap

Açıklama: ISO 8601 biçimi YYYY-MM-DD'dir: 2024-03-15.

3 std::to_string çağrısını tamamla

Soru
return std::____(year) + "-" + m + "-" + d;
Cevap
return std::to_string(year) + "-" + m + "-" + d;

Açıklama: std::to_string sayıyı dizeye çevirir.

Orta seviye bölümündeki tüm dersler