Android - То, как определить объекта времени, между двумя другими объектами времени?

Как я могу определить, ли текущее время между двумя другими объектами времени?

Например: ток: 15:23, startTime: 22:00, endTime: 6:00. Таким образом, текущее время не между этим два других раза, но это "23:47".

*Я не забочусь о дате только о времени

Я пытался сделать это как это:

Time startTime = getStartTime();
Time endTime = getEndTime();

Calendar c = Calendar.getInstance();
Time now = new Time(c.getTimeInMillis());

if (now.before(endTime) && now.after(startTime)) {
    return true;
}

return false;

но это dosen't работает хорошо. их не ошибка, но это просто dosen't работа.

Чтобы быть более точной, проблема состоит в том, что 15:35.after (22:00) возвращение, верное... и я не знаю почему. Я думаю, что проблема - что-то с датами, но я не знаю что

2
nl ja de

4 ответы

Я нашел решение:

    Time startTime = getStartTime();
    Time endTime = getEndTime();

    Calendar startCalendarTime = Calendar.getInstance();
    startCalendarTime.set(Calendar.YEAR, Calendar.MONTH, Calendar.DAY_OF_MONTH, startTime.getHours(), startTime.getMinutes(), 0);

    Calendar endCalendarTime = Calendar.getInstance();
    endCalendarTime.set(Calendar.YEAR, Calendar.MONTH, Calendar.DAY_OF_MONTH, endTime.getHours(), endTime.getMinutes(), 0);

    Calendar midnightTime = Calendar.getInstance();
    midnightTime.set(Calendar.YEAR, Calendar.MONTH, Calendar.DAY_OF_MONTH, 23, 59, 0);

    Calendar nowCalendarTime = Calendar.getInstance();
    nowCalendarTime.set(Calendar.YEAR, Calendar.MONTH, Calendar.DAY_OF_MONTH);

    if (startCalendarTime.after(endCalendarTime)) {

        if (nowCalendarTime.after(midnightTime)) {
            startCalendarTime.add(Calendar.DAY_OF_YEAR, -1);
        } else {
            endCalendarTime.add(Calendar.DAY_OF_YEAR, 1);
        }

    }
    int hours = nowCalendarTime.getTime().getHours();
    int minutes = nowCalendarTime.getTime().getMinutes();
    nowCalendarTime.set(Calendar.YEAR, Calendar.MONTH, Calendar.DAY_OF_MONTH, hours, minutes, 0);

    if (nowCalendarTime.after(startCalendarTime) && nowCalendarTime.before(endCalendarTime)) {
        return true;
    }

    return false;
0
добавлено

Попробуйте этот код

long startTime = getStartTime();//return the as long
long endTime = getEndTime();// return the value as long

Calendar c = Calendar.getInstance();
long now = c.getTimeInMillis();

if (now>startTime && now
0
добавлено
Его doen' t работа...
добавлено автор Alex Kapustian, источник
Поскольку now=23 не (23> 21 && 23 <00)
добавлено автор Dmitry Nelepov, источник

Я должен был 'успокоить времена', когда мое приложение не объявит о разговорном содержании.

Вот мое решение, отформатированное для простоты чтения:

private boolean quietTimesOk(final Context ctx) {

    final Calendar cal = Calendar.getInstance();
    final int hour = cal.get(Calendar.HOUR_OF_DAY);
    final int minute = cal.get(Calendar.MINUTE);
    final int combined = (hour * 60) + minute;

    final int qtsHour = getQuietTimeStartHour(ctx);
    final int qtsMinute = getQuietTimeStartMinute(ctx);
    final int qtsCombined = (qtsHour * 60) + qtsMinute;

    final int qteHour = getQuietTimeEndHour(ctx);
    final int qteMinute = getQuietTimeEndMinute(ctx);
    final int qteCombined = (qteHour * 60) + qteMinute;

    if (qtsCombined > qteCombined) {            
        Log.i("quietTimesOk", "- qtsCombined > qteCombined");

        if (combined < qtsCombined && combined > qteCombined) {
            Log.i("quietTimesOk", "- returning true");
            return true;
        }

    } else {            
        Log.i("quietTimesOk", "- qtsCombined < qteCombined");

        if (combined < qtsCombined || combined > qteCombined) {
            Log.i("quietTimesOk", "- returning true");
            return true;
        }
    }

    Log.i("quietTimesOk", "- returning false");

    return false;
}
0
добавлено

I think you've just got a typo. You want to use (now.before(endTime) && now.after(startTime)).

Как это:

Time startTime = getStartTime();
Time endTime = getEndTime();

Calendar c = Calendar.getInstance();
Time now = new Time(c.getTimeInMillis());

if (now.before(endTime) && now.after(startTime)) {
    return true;
}

return false;
0
добавлено
Не ошибка опечатки тыс ошибки была только здесь, и я зафиксировал его
добавлено автор Alex Kapustian, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)