Как получить время в миллисекундах с момента времени из boost :: posix_time :: ptime

Я видел несколько других ответов на 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();

На этом этапе разница составляет -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 ".

5
задан Community 23 May 2017 в 12:08
поделиться