Преобразовать представление десятичного времени в эпоху Unix - PullRequest
3 голосов
/ 03 января 2011

У меня есть время, хранящееся в 64-битном int в форме 20110103101419 (т. Е. Представляет 2011-01-03 10:14:19). Как я могу преобразовать это в секунды с 1970 года?

Ответы [ 3 ]

6 голосов
/ 03 января 2011

Мой C немного заржавел, но, посмотрев на два других ответа, я написал бы следующую функцию, возвращающую количество секунд с начала эпохи или -1 в случае ошибки.

#include <stdio.h>
#include <time.h>

time_t convertDecimalTime(long dt) {
  struct tm time_str;

  time_str.tm_isdst = -1;
  time_str.tm_sec   = dt%100; dt/=100;
  time_str.tm_min   = dt%100; dt/=100;
  time_str.tm_hour  = dt%100; dt/=100;
  time_str.tm_mday  = dt%100; dt/=100;
  time_str.tm_mon   = dt%100-1; dt/=100;
  time_str.tm_year  = dt%10000 - 1900;

  return mktime(&time_str);
}
1 голос
/ 03 января 2011

Пожалуйста, обратитесь к strftime . Вы можете проанализировать ввод и использовать формат% s для отображения количества секунд с начала эпохи,

0 голосов
/ 03 января 2011

Используйте mktime для создания struct tm, затем вы можете использовать strftime с параметром формата %s, чтобы получить количество секунд с начала эпохи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...