Получение текущего дня недели в Android: простой способ
Быстрый ответ
Чтобы определить текущий день недели в Android, вы можете использовать следующий код:
int today = java.util.Calendar.getInstance().get(java.util.Calendar.DAY_OF_WEEK);
В переменной today
будет сохранено число от 1 (воскресенье) до 7 (суббота). Современнее решение предполагает использование класса LocalDate
:
import java.time.LocalDate;
import java.time.DayOfWeek;
DayOfWeek day = LocalDate.now().getDayOfWeek();
Этот код возвращает объект DayOfWeek
, который соответствует текущему дню недели.
Поддержка Java 8 и более поздних версий
Если вашей средой выполнения является Java 8 или более поздняя версия, работать с датами будет удобнее благодаря desugaring – механизму, доступному и в старых версиях Android.
- Произведите настройку файла
build.gradle(Module: app)
.
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'
...
}
- Теперь вы можете использовать классы
LocalDate
иDayOfWeek
.
DayOfWeek day = LocalDate.now().getDayOfWeek();
Локализация и форматирование: Ведь по-разному читают даты все
Определив день недели, стоит подумать над его отображением для пользователей. Преобразуйте день недели в удобочитаемый формат с помощью java.time.format.DateTimeFormatter
и java.text.SimpleDateFormat
:
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: Когда код сталкивается с неожиданностями
В работе с датой и временем критически важно устойчивое функционирование вашего приложения в вариабельных ситуациях. Используйте обработку исключений:
try {
DayOfWeek day = LocalDate.now().getDayOfWeek();
// Будто первый глоток свежего воздуха в воскресное утро 🎵
} catch (DateTimeException ex) {
Log.e("DateError", "Возникли проблемы при определении текущего дня недели", ex);
// Наверное, наступил понедельник 😫
}
Разнообразие не только в датах: Важность пользовательского опыта
Цифровое обозначение дня недели мало говорит вашим пользователям, поэтому подумайте, как сделать информацию по-настоящему полезной и интересной:
switch (day) {
case SATURDAY:
case SUNDAY:
highlightWeekendTasks();
// 😎 Время для отдыха.
break;
default:
highlightWeekdayTasks();
// 😱 Рабочий день.
}
Визуализация
Представьте ваше Android-приложение в виде календаря 🗓️, который должен показывать текущий день.
Вы получаете день недели, как бы коснувшись календаря взглядом 🗓️↗️:
Calendar c = Calendar.getInstance();
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
И это как бы касание для напоминания, рабочий ли сегодня день или пора отдохнуть:
🗓️ Сегодня: среда == 🐪, уже полпути пройдено! Терпим!
Полезные материалы
- Calendar | Android Developers — безупречное руководство по использованию класса Calendar в Android.
- java – How to determine day of week by passing specific date? – Stack Overflow — методы определения дня недели в Java, предложенные профессионалами сообщества.
- Localize your app | Android Developers — консультации по вопросам локализации ваших Android-приложений.
- GregorianCalendar (Java Platform SE 7 ) — руководство по работе с классом GregorianCalendar.
- SimpleDateFormat (Java Platform SE 7 ) — подробности о форматировании даты в Java.
- Locale (Java Platform SE 8 ) — основы работы с классом Locale для эффективной локализации.