У меня стоит задача написать функцию, которая получает от GPS и возвращает текущее время. В какой структуре или объекте, какого класса из стандартной библиотеки мне хранить это время? Мне нужно, что бы была возможность легко задавать и получать значения секунд, минут, часов и т.п. Т.е. что то типа
time_point time_now = now();
int hour = time_now.hour();
int second = time_now.second();
time_now.second = 0;
Сейчас у меня много где в коде используется std::chrono::time_point, но как, имея конкретный объект получить, например количество часов прошедших от начала суток я не знаю.
Можете воспользоваться стандартной библиотекой 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.
Вам принципиальны "++"?
Если нет, то gettimeofday(), localtime(), mktime() и работы со struct timeval может быть достаточно.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей