iOs и время андроида в миллисекундах не совпадают? - PullRequest
0 голосов
/ 28 июня 2018

У меня есть проект на iOS и Android, в котором я использую firebase в качестве удаленного сервера. Я должен сохранить текущую дату в базе данных с Android и iOS, а также. Так что я могу получить его позже и найти разницу между некоторыми датами. В iOS я экономлю время как время в миллисекундах с 1970 года. В Android я просто беру это как system.getTimeInMillis();

Но позже я обнаружил, что оба не возвращают одно и то же значение. Я хочу сделать то же самое для Android и iOS. Я пробовал некоторые методы из переполнения стека и других форумов. Но я не мог найти ответ. Иногда iOS сохраняет значение как двойной, а Android сохраняет его долго. Я пытался

Calendar mycalendar  = Calendar.getInstance();
mycalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
mycalendar.set(Calendar.MINUTE, minute);
mycalendar.set(Calendar.SECOND, 0);

long times = mycalendar.getTimeInMillis();

все равно он не возвращает одно и то же значение в iOS в течение того же времени. Так что кто-нибудь может подсказать, как получить одинаковое время в миллисекундах для Android и iOS?

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Попробуйте использовать библиотеку TrueTime на основе NTP. Для одного и того же варианта использования мы все смогли достичь точного времени на обеих платформах. Сохраняйте NTP-сервер одинаковым для обеих платформ.

Android: https://github.com/instacart/truetime-android

iOS: https://github.com/instacart/TrueTime.swift

0 голосов
/ 28 июня 2018

Почему вы ожидаете, что два разных устройства будут синхронизированы с миллисекундами без МНОГО работы, чтобы сделать это так? Это в принципе невозможно. Время не является универсальной константой, которая волшебным образом замыкается в вашем телефоне - в устройствах есть часы и оборудование, которые всегда будут слегка отключены, даже если они синхронизированы с сетью, и сеть синхронизирует оба устройства, с которыми приходится иметь дело с задержкой в ​​сети .

Я настоятельно рекомендую вам прочитать https://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time и https://infiniteundo.com/post/25509354022/more-falsehoods-programmers-believe-about-time Вы не можете думать о времени таким, какой вы есть.

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