Преобразовать каркас Apple Epoch (reference_date) в Java Date - PullRequest
0 голосов
/ 09 августа 2011

клиент iPhone отправляет дату на Java-сервер в виде платформы Apple Cocoa Epoch (это мс с 2001 года), а когда вы конвертируете в дату Java (с 1970 года), он преобразуется в 1980 год для 2011 года, добавляя 30 лет к Какао дата будет преобразована? или есть какой-то другой метод, который я мог бы использовать для этого преобразования?

1 Ответ

6 голосов
/ 26 июля 2012

Я бы порекомендовал настроить секунды на время эпохи Unix (с 1970 года), добавив соответствующее количество секунд вместо увеличения года.Я не уверен, но мои инстинкты говорят мне, что удар по самому году в некоторых случаях будет неправильным (с високосными годами и небольшими изменениями в календаре и т. Д.).

Если вам нужно добавить секунды к секундамс 1 января 2001 года номер, который вы ищете, +978307200.Если вам нужен миллис, просто умножьте на 1000.

В качестве примера, у меня был некоторый код, необходимый для определения дат эпохи Apple и Unix в секундах с начала эпохи, и преобразования их в даты Java, которые заняли миллисекунды с начала эпохи Unix.в конструкторе:

// Earlier than 1985 in Unix, must be Apple
if(date < 473410800) {
    m.date = new Date((date + 978307200L) * 1000);
} else {
    m.date = new Date(date * 1000);
}
...