C++:
Обчислення дати у майбутньому або минулому
Як це робити:
#include <iostream>
#include <chrono>
#include <ctime>
int main() {
using namespace std::chrono;
// Сьогоднішня дата
system_clock::time_point today = system_clock::now();
// Розрахунок дати через 10 днів
system_clock::time_point future_date = today + days(10);
// Конвертація у стандартний час
std::time_t future_time = system_clock::to_time_t(future_date);
// Вивід
std::cout << "Today is: " << std::ctime(&future_time);
std::cout << "Date after 10 days will be: " << std::ctime(&future_time);
// Розрахунок дати 10 днів назад
system_clock::time_point past_date = today - days(10);
std::time_t past_time = system_clock::to_time_t(past_date);
std::cout << "Date 10 days ago was: " << std::ctime(&past_time);
return 0;
}
Можливий вивід:
Today is: Thu Mar 4 2021
Date after 10 days will be: Sun Mar 14 2021
Date 10 days ago was: Tue Feb 22 2021
Поглиблено:
Програмісти вже декілька десятиліть використовують різні методи для маніпуляцій з датами. В історичному контексті, найпопулярніші бібліотеки для C++ це ctime
та більш сучасна chrono
, яка з’явилась у C++11 і була поліпшена в наступних версіях стандарту.
Альтернативою є користування зовнішніми бібліотеками як-от Boost.Date_Time. Вони надають додаткову гнучкість, але для більшості завдань стандартної бібліотеки цілком достатньо.
Деталі реалізації включають обробку часових зон та перехід на літній/зимовий час. Важливо враховувати ці аспекти, коли додаток взаємодіє з користувачами у різних часових зонах.