2016-04-14 3 views
2

Теперь у меня есть отметки времени, которые находятся в микросекундах с полуночи, 1 января, 0 н.э., по умолчанию, григорианский, после поиска я заметил, что некоторые люди называют это «родным временем для Symbian», ? Как бы то ни было, я действительно не знаю, как преобразовать это «родное время Symbian» в Unix time (время с Epoch). Существует ли какая-либо стандартная функция в C/C++?c/C++ - конвертировать между временем Unix и «григорианским временем»

Пример данных, как: 63626825878362695, 63626825878363759, 63626825878657652

+0

Если это помогает, эта эпоха - это время с полуночи, 1 января 1970 года, поэтому вы можете рассчитать количество секунд между текущей меткой времени и тем, чтобы воссоздать эпоху. – CodeMouse92

+0

На самом деле, этот вопрос является дубликатом http://stackoverflow.com/q/11979655/472647 – CodeMouse92

ответ

1
  1. Вы будете нуждаться в 64-битную арифметику, или bignums.
  2. Если my tool за помощь мне с такими вопросами правильна, были 62167132800 секунд между 1 января 0000 (преждевренный григорианского) и 1 января 1970 года
  3. Преобразование Unix время Symbian, добавить 62167132800 и умножить на 1000000..
  4. для преобразования Symbian времени Unix, разделите на 1000000. и вычитать 62167132800.

Это выглядит как три значения, которые вы дали (которые все в той же второй) являются от около 10 дней назад.

+0

еще одним хорошим вариантом является использование [wolfram] (http://www.wolframalpha.com/), чтобы получить номер ' секунд между 01/01/0000 и 01/01/1970'. – ddz

+0

@LuizEduardoF. Да. Я попробовал Вольфрама, как ты предложил, и получил другой ответ. Тем не менее, я дважды проверил шахту, и я уверен, что 62167132800 верен. Интересно, что с этим? –

+1

Я не знаю причины. Может, я задал неправильный вопрос? Входная интерпретация: 'секунды от | Суббота, 1 января 1 г. до н.э. (1 января, 0) до четверга, 1 января 1970 г., что дает 62167219200. Разница между 62167132800 (ваш ответ) и 62167219200 (ответ вольфрама) составляет 24 часа или 86400 секунд. – ddz

0

Year 0 AD на самом деле не существует ;-)

Вы должны быть в состоянии использовать ICU - International Components for Unicode, так как она способна обрабатывать наиболее распространенные преобразования даты и времени. Посмотрите на Преобразование на странице Universal Time Scale - это показывает, как использовать ICU для преобразования между различными форматами даты и времени.

Смежные вопросы