Как узнать разницу во времени между устройством и сервером?
Еще учтите, что у пользователя может быть криво выставлен часовой пояс, и его GMT0 может отличаться от истинного:)

В общем-то, чтобы это решить, надо чтобы сервер присылал не только время окончания события, а еще и «сколько сейчас времени по мнению сервера на GMT0». Далее надо получить специфичное для клиента время по GMT0. Вычитаем одно из другого и сразу получаем поправку на и сетевые лаги и на неправильные часы в устройстве.
В моём приложение(мониторинг), я завёл отдельный тред, который раз в час, синхронизирует с сервером внутренние часы приложения, по ntp. Времени выставленному пользователем на системе не доверяю абсолютно.