Как узнать актуальное время и дату в android?

Я работаю над приложением для Android, в котором я показываю пользователям время и дату для бронирования. В настоящее время я использую системные время и дату, но проблема в том, что пользователь может изменить их в любое время. Итак, как получить правильное время и дату? Я работаю над этой проблемой более 3 дней, но не нашел решения. Любая помощь приветствуется.

может это поможет? github.com/instacart/truetime-android

Zun 11.07.2018 15:39

Взгляните на это: stackoverflow.com/questions/13064750/…. Это то, что вам нужно?

ParkerHalo 11.07.2018 15:39

несколько лет назад я использовал эту библиотеку для этого github.com/dlew/joda-time-android

Joaquín 11.07.2018 15:40

Планируете ли вы хранить свои бронирования на каком-то сервере? Если да, то можете ли вы получить текущее время с сервера?

Ole V.V. 11.07.2018 23:33
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
261
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Возможно, это сработает:

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
int mYear = calendar.get(Calendar.YEAR);
int mMonth = calendar.get(Calendar.MONTH);
int mDay = calendar.get(Calendar.DAY_OF_MONTH);
int mHour = calendar.get(Calendar.HOUR);
int mMinute = calendar.get(Calendar.MINUTE);
int mSecond = calendar.get(Calendar.SECOND);
System.out.print(mDay + "." + mMonth + "." + mYear + "  " + mHour + ":" + mMinute + ":" + mSecond +"\n")

спасибо, но это то, что я назвал системным временем. Мне это не нужно, я нашел ответ.

Venkatasai Patnala 11.07.2018 18:16
Ответ принят как подходящий

У меня это сработало, но неточно в считанные секунды, для меня это не большая проблема. Используется база данных firebase в реальном времени.

final DatabaseReference offsetRef = 
FirebaseDatabase.getInstance().getReference(".info/serverTimeOffset");
    offsetRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            long offset = snapshot.getValue(Long.class);
            long estimatedServerTimeMs = System.currentTimeMillis() + offset;
            SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm");
            Date resultdate = new Date(estimatedServerTimeMs);
            Log.d(Tag,"date from firebase is "+sdf.format(resultdate).toString());
        }

        @Override
        public void onCancelled(DatabaseError error) {
            System.err.println("Listener was cancelled");
            Log.d(Tag,"error is "+error.toString());
        }
    });

Другие вопросы по теме