Отримання поточної дати

C++:
Отримання поточної дати

Як:

C++ надає кілька способів отримання поточної дати, включаючи стандартну бібліотеку C++ та сторонні бібліотеки, як-от Boost. Наступні приклади демонструють, як виконати це завдання.

Використовуючи <chrono> (C++20 та новіше)

C++20 ввів додаткові функції в бібліотеку <chrono>, що робить отримання поточної дати простим:

#include <iostream>
#include <chrono>
#include <format> // для std::format (C++20)

int main() {
    auto current_time_point = std::chrono::system_clock::now(); // Захоплення поточного часу
    auto current_time_t = std::chrono::system_clock::to_time_t(current_time_point); // Конвертація в time_t

    // Форматування часу до зрозумілого формату
    std::cout << "Поточна Дата: " << std::format("{:%Y-%m-%d}", std::chrono::system_clock::to_time_t(current_time_point)) << std::endl;

    return 0;
}

Приклад Виводу:

Поточна Дата: 2023-03-15

Використовуючи <ctime>

Для програмістів, які працюють зі старими версіями C++ або тих, хто віддає перевагу традиційній бібліотеці C:

#include <iostream>
#include <ctime>

int main() {
    std::time_t t = std::time(0); // Отримання поточного часу
    std::tm* now = std::localtime(&t);
    std::cout << "Поточна Дата: " 
              << (now->tm_year + 1900) << '-' 
              << (now->tm_mon + 1) << '-'
              <<  now->tm_mday
              << std::endl;

    return 0;
}

Приклад Виводу:

Поточна Дата: 2023-03-15

Використовуючи Boost Date_Time

Для проектів, які використовують бібліотеки Boost, бібліотека Boost Date_Time пропонує альтернативний метод отримання поточної дати:

#include <iostream>
#include <boost/date_time.hpp>

int main() {
    // Отримання поточного дня за допомогою григоріанського календаря Boost
    boost::gregorian::date today = boost::gregorian::day_clock::local_day();
    std::cout << "Поточна Дата: " << today << std::endl;

    return 0;
}

Приклад Виводу:

Поточна Дата: 2023-Mar-15

Ці приклади надають базовий фундамент для роботи з датами в C++, що є критично важливим для широкого спектру застосунків.