2017-02-19 19 views
0

Я искал способ вычисления будущей даты календаря на C++ с использованием местного времени, но до сих пор нет кубиков.Как вызывать местное время и местное время плюс X часов с использованием std :: chrono

В основном я хочу добавить 3 дня (для стандартной поставки) ИЛИ добавить один день (для ночной доставки) на время ТОКА (распечатано в формате MM-DD-YYYY и который извлекается компьютером). Как это сделать просто [не требуется никаких алгоритмов] в C++?

Вывод будет выглядеть следующим образом:

Would you like overnight delivery [Y/N]? Y 

Today's Date: 03-25-2017 
Your Expected Arrival Date: 03-26-2017 

Would you like overnight delivery [N/Y]? N 

Today's Date: 03-25-2017 
Your Expected Arrival Date: 03-28-2017 
+0

Посмотрите объекты в 'std :: chrono'. –

+2

Добро пожаловать в переполнение стека. Пожалуйста, найдите время, чтобы прочитать [The Tour] (http://stackoverflow.com/tour) и обратитесь к материалу из [Справочного центра] (http://stackoverflow.com/help/asking) о том, что и как вы можете спросите здесь. –

+0

Возможный дубликат [Алгоритм добавления или вычитания дней с даты?] (Http://stackoverflow.com/questions/2344330/algorithm-to-add-or-subtract-days-from-a-date). Его вопрос на C++, и он дает вам стратегию. Он также предоставляет ссылки на алгоритмы. – jww

ответ

2

Вот как сделать это менее чем за 8 строк кода. Используйте часы, чтобы указать точное количество времени в будущем, которое вы хотите посетить. Форматирование очень грубо и непривлекательно, как C. Не забудьте указать каждый «сейчас» ... ускоренный отличается от обычной доставки!

chrono::system_clock::time_point now = chrono::system_clock::now(); 
time_t now_c = chrono::system_clock::to_time_t(now + chrono::hours(24)); 
cout << "Overnight Shipping Expected Arrival Date: " << put_time(localtime(&now_c), "%F") << '\n'; 

chrono::system_clock::time_point now2 = chrono::system_clock::now(); 
time_t now2_c = chrono::system_clock::to_time_t(now2 + chrono::hours(72)); 
cout << "Standard Shipping Expected Arrival Date: " << put_time(localtime(&now2_c), "%F") << '\n';