uint64_t timestamp_nanoseconds = 634019142119225390;
time_t result = timestamp_nanoseconds / 1000000000;
struct tm * timeinfo = gmtime(&result);
struct tm dateInfo ;
dateInfo.tm_mday = timeinfo->tm_mday ;
dateInfo.tm_mon = timeinfo->tm_mon ;
dateInfo.tm_year = timeinfo->tm_year ;
dateInfo.tm_hour = 0 ;
dateInfo.tm_min = 0 ;
dateInfo.tm_sec = 0 ;
time_t NoOfSecInDate = mktime ( &dateInfo );
Из входной метки времени в наносекундах мы можем получить дату, как показано в коде, который был установлен в структуре dateInfo. С этого момента нам нужно найти время в секундах, прошедшее с полуночи даты ввода.
Мы получаем ввод как истекшее время в наносекундах с эпохи 1 января 1970 года. Скажем, например, 634019142119225390. Из этого мы извлекаем дату со временем, установленным на 00:00:00, нам нужно найти прошедшее время в целых числах без знака, представляющих прошедшее время в наносекундах. с эпохи Unix 00:00 UTC 1 января 1970 г. с полуночи этой даты.
Решение должно быть для любой данной отметки времени, а не для текущей даты.
В этом приведенном выше коде мы обнаруживаем, что выполнение функции mktime занимает около 64 микросекунд, что является большим временем и не ожидается.
Есть ли у вас какая-либо другая альтернатива функции mktime, которая достигает того же результата, который возвращает истекшее время в секундах с начала эпохи, но с меньшим количеством времени.
result
time_t, с которого вы должны были начать? - person doctorlove   schedule 02.08.2017