Например, если сейчас 10 января 2025 года 23:30:00 в часовом поясе Америки/Нью-Йорка, я мог бы захотеть создайте объект local_time, представляющий эту дату в 16:30 (так что я должен получить дату 10 января 2025 г., 16:30:00). Если пройдет один час и текущая дата/время будут 11 января 2025 года 00:30:00, то тот же алгоритм и целевое время должны привести к созданию объекта даты/времени 11 января 2025 года 16:30:00.
Мне не удалось придумать способ добиться этого — Boost.DateTime, и это не смешно. Казалось бы, очевидным путем будет использование boost::local_time::local_sec_lock() для получения текущей даты/времени в выбранном мной часовом поясе, а затем создание нового объекта local_date_time с компонентом даты local_sec_lock и выбранным мной временем:< /p>
Код: Выделить всё
local_date_time TodayAtTime(time_zone_ptr timezone, time_duration targetTime)
{
local_date_time now = local_sec_clock::local_time(timezone);
return local_date_time(now.date(), targetTime, timezone, local_date_time::EXCEPTION_ON_ERROR);
}
https://godbolt.org/z/j3acfznos
Единственный жизнеспособный метод, который я нашел до сих пор, - это для сериализации теперь в std::ostringstream, проанализируйте строку, чтобы найти год, месяц и день, и используйте это для создания local_date_time. Однако это до смешного запутанный метод. Наверняка есть способ добиться того, что мне нужно, в API Boost.DateTime?
Подробнее здесь: https://stackoverflow.com/questions/793 ... n-a-arbitr