Я видел некоторые другие ответы на SO , которые предполагают, что мы можем получить время из эпохи в миллисекундах, вычитая время эпохи из «другого» времени, но это не работает, когда я пытаюсь это:
ptime epoch = time_from_string("1970-01-01 00:00:00.000");
ptime other = time_from_string("2011-08-09 17:27:00.000");
long diff = (other-epoch).total_milliseconds();
На этом этапе diff равно -1349172576, и оно должно быть положительным числом, так как «другое» время - 2011. Кто-нибудь знает, что может быть причиной этого? Как правильно получить миллисекунды с эпохи?
Кроме того, я попытался построить объект ptime за миллисекунды:
ptime result = from_time_t(diff);
Результатом становится: «1927-Apr-01 13:50:24», и это должно быть «2011-Aug-09 17: 27: 00.000». В чем тут подвох?
Обновление:
ОК, поэтому моя ошибка связана с тем, что у меня есть 2 программы, одна из которых C # (8 байт / 64-битная длина) и C ++ (4 байт / 32-битная длина); в любом случае, это взаимодействие здесь не изображено.
Однако, когда я использую long long
, значение является положительным, но итоговая дата (построенная from_time_t
) по-прежнему неверна: «2012-Oct-02 10:09:36».