Как установить time_point system_lock с годом, месяцем, днемC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как установить time_point system_lock с годом, месяцем, днем

Сообщение Anonymous »

Я хочу преобразовать год, месяц и день в формате UTC в std::chrono::time_point (а также отобразить его).

Код: Выделить всё

#include 
using namespace std::chrono;

void DisplayDate(int y, int m, int d) {//e.g. 2024, 11, 22
time_point tp;
//tp = system_clock::now(); // this works as expected.
tp = system_clock::time_point(years(y-1970) + months(m-1) + days(d-1));// this doesn't
std::wstring s = std::format(L"{:%Y-%m-%d %H:%M:%S}", zoned_time{current_zone(), tp});
wprintf(s.c_str());
}
Здесь DisplayDate(2024,11,22) дает 2024-11-21 04:07:48.0000000, но я ожидал бы 2024-11-22 00 :00:00.0000000 и я в недоумении (особенно), где 04:07:48 откуда и как это исправить. Особенно меня озадачивает странное смещение 7:48, даже после нескольких часов изучения этого.
Я мог бы использовать обход std::tm из раздела «Как получить хроно-точку времени из года, месяца, дня, часа, минуты, секунды, миллисекунды? но я хочу понять, как это сделать напрямую.

Подробнее здесь: https://stackoverflow.com/questions/792 ... -month-day
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»