Страницы

Поиск по вопросам

пятница, 14 февраля 2020 г.

Тип для хранения времени в С++

#cpp #время #cpp17


У меня стоит задача написать функцию, которая получает от GPS и возвращает текущее
время. В какой структуре или объекте, какого класса из стандартной библиотеки мне хранить
это время? Мне нужно, что бы была возможность легко задавать и получать значения секунд,
минут, часов и т.п. Т.е. что то типа      

time_point time_now = now();
int hour = time_now.hour();
int second = time_now.second();
time_now.second = 0; 


Сейчас у меня много где в коде используется std::chrono::time_point, но как, имея
конкретный объект получить, например количество часов прошедших от начала суток я не
знаю.  
    


Ответы

Ответ 1



Можете воспользоваться стандартной библиотекой C для работы с датой и временем: std::time_t t = time(nullptr); std::cout << localtime(&t)->tm_hour; В C++20 в библиотеку chrono добавляются функции для работы с датой, временем, временными зонами, новые классы часов и т.д. подробнее на cppreference Сейчас Вы можете, например, сконвертировать time_point в std::time_t и также использовать функции из стандартной библиотеки C: using sc = std::chrono::system_clock; std::time_t t = sc::to_time_t(sc::now()); std::cout << localtime(&t)->tm_hour; В Boost имеется библиотека Date_Time В Qt также имеется класс для работы со временем - QDateTime.

Ответ 2



Вам принципиальны "++"? Если нет, то gettimeofday(), localtime(), mktime() и работы со struct timeval может быть достаточно.

Комментариев нет:

Отправить комментарий