Получение текущего дня недели в Android: простой способ

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы определить текущий день недели в Android, вы можете использовать следующий код:

Java
Скопировать код
int today = java.util.Calendar.getInstance().get(java.util.Calendar.DAY_OF_WEEK);

В переменной today будет сохранено число от 1 (воскресенье) до 7 (суббота). Современнее решение предполагает использование класса LocalDate:

Java
Скопировать код
import java.time.LocalDate;
import java.time.DayOfWeek;

DayOfWeek day = LocalDate.now().getDayOfWeek();

Этот код возвращает объект DayOfWeek, который соответствует текущему дню недели.

Кинга Идем в IT: пошаговый план для смены профессии

Поддержка Java 8 и более поздних версий

Если вашей средой выполнения является Java 8 или более поздняя версия, работать с датами будет удобнее благодаря desugaring – механизму, доступному и в старых версиях Android.

  1. Произведите настройку файла build.gradle(Module: app).
gradle
Скопировать код
android {
  ...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
  coreLibraryDesugaringEnabled true
}
dependencies {
  coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.9'
  ...
}
  1. Теперь вы можете использовать классы LocalDate и DayOfWeek.
Java
Скопировать код
DayOfWeek day = LocalDate.now().getDayOfWeek();

Локализация и форматирование: Ведь по-разному читают даты все

Определив день недели, стоит подумать над его отображением для пользователей. Преобразуйте день недели в удобочитаемый формат с помощью java.time.format.DateTimeFormatter и java.text.SimpleDateFormat:

Java
Скопировать код
import java.time.format.DateTimeFormatter;
import java.time.format.TextStyle;
import java.util.Locale;

DayOfWeek day = LocalDate.now().getDayOfWeek();
String dayName = day.getDisplayName(TextStyle.FULL, Locale.getDefault());

Представьте имя дня, например, как "понедельник", с учётом локальных настроек устройства.

Блок try, catch: Когда код сталкивается с неожиданностями

В работе с датой и временем критически важно устойчивое функционирование вашего приложения в вариабельных ситуациях. Используйте обработку исключений:

Java
Скопировать код
try {
    DayOfWeek day = LocalDate.now().getDayOfWeek();
    // Будто первый глоток свежего воздуха в воскресное утро 🎵
} catch (DateTimeException ex) {
    Log.e("DateError", "Возникли проблемы при определении текущего дня недели", ex);
    // Наверное, наступил понедельник 😫
}

Разнообразие не только в датах: Важность пользовательского опыта

Цифровое обозначение дня недели мало говорит вашим пользователям, поэтому подумайте, как сделать информацию по-настоящему полезной и интересной:

Java
Скопировать код
switch (day) {
    case SATURDAY:
    case SUNDAY:
        highlightWeekendTasks();
        // 😎 Время для отдыха.
        break;
    default:
        highlightWeekdayTasks();
        // 😱 Рабочий день.
}

Визуализация

Представьте ваше Android-приложение в виде календаря 🗓️, который должен показывать текущий день.

Вы получаете день недели, как бы коснувшись календаря взглядом 🗓️↗️:

Java
Скопировать код
Calendar c = Calendar.getInstance();
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);

И это как бы касание для напоминания, рабочий ли сегодня день или пора отдохнуть:

Markdown
Скопировать код
🗓️ Сегодня: среда == 🐪, уже полпути пройдено! Терпим!

Полезные материалы

  1. Calendar | Android Developersбезупречное руководство по использованию класса Calendar в Android.
  2. java – How to determine day of week by passing specific date? – Stack Overflow — методы определения дня недели в Java, предложенные профессионалами сообщества.
  3. Localize your app | Android Developers — консультации по вопросам локализации ваших Android-приложений.
  4. GregorianCalendar (Java Platform SE 7 ) — руководство по работе с классом GregorianCalendar.
  5. SimpleDateFormat (Java Platform SE 7 ) — подробности о форматировании даты в Java.
  6. Locale (Java Platform SE 8 ) — основы работы с классом Locale для эффективной локализации.