Получить количество дней с эпохи в C ++ (кросс-платформу)

Как я могу получить количество дней с эпохи в C ++, я знаю, что я должен использовать функцию mktime , но я не могу понять, как ее реализовать

Благодаря!

2
nl ja de
Требуется ли функция mktime ()? В зависимости от того, для чего вы это делаете, вам может потребоваться опрокинуть ваше собственное решение. Если бы я это сделал, я бы начал с написания программы, которая подсчитывает количество дней с начала года. Если у вас возникли проблемы с этим, сделайте еще один шаг и напишите программу, которая подсчитывает количество дней с начала месяца. (Обратите внимание, что я предлагаю упростить проблему. Всегда полезно найти небольшую проблему, которую вы легко можете решить и которая поможет решить большую проблему.
добавлено автор Code-Apprentice, источник
@Breakdown См. Мой отредактированный комментарий выше, который дает несколько советов.
добавлено автор Code-Apprentice, источник
@ Code-Guru, нет, mktime не требуется
добавлено автор Breakdown, источник
добавлено автор Lim H., источник

3 ответы

Изменение кода примера из cplusplus.com :

#include 
#include 

int main ()
{
  time_t seconds;

  seconds = time (NULL);
  int daysSinceEpoch = seconds/(60*60*24);
  printf ("%ld days since January 1, 1970", daysSinceEpoch);

  return 0;
}
3
добавлено
Даты и времена - это разные вещи. День - это не только 24 часа, это разница между одной датой и следующей, включая секунды прыжка, корректировки дневного света и т. Д.
добавлено автор bames53, источник

Начните с получения текущего времени с time (NULL) . Передайте это значение gmtime , которое возвращает вам tm * . Прочтите документацию для tm .

1
добавлено

Dates aren't easy to work with correctly. The standard library as it stands today doesn't offer the capability to do this correctly. You should use a proper date library, such as boost::date or Howard Hinnant's .

С библиотекой Хиннанта код может выглядеть примерно так:

date epoch = year(1970)/jan/day(1);//Assuming you're referring to the traditional Unix epoch (some systems such as Cocoa on OS X use the first day of the millenium, Jan 1, 2001 as their epoch)
days d = date::today() - epoch;
0
добавлено
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest