Получить день недели от GregorianCalendar
у меня есть дата, и мне нужно знать день недели, поэтому я использовал объект GregorianCalendar, но я возвращаю некоторые даты, которые неверны.
GregorianCalendar calendar = new GregorianCalendar(year, month, day);
int i = calendar.get(Calendar.DAY_OF_WEEK);
что я делаю не так?
спасибо!
ИЗМЕНИТЬ РЕШЕНИЕ:
mont--;
GregorianCalendar calendar = new GregorianCalendar(year, month, day);
int i = calendar.get(Calendar.DAY_OF_WEEK);
if(i == 2){
dayOfTheWeek = "Mon";
} else if (i==3){
dayOfTheWeek = "Tue";
} else if (i==4){
dayOfTheWeek = "Wed";
} else if (i==5){
dayOfTheWeek = "Thu";
} else if (i==6){
dayOfTheWeek = "Fri";
} else if (i==7){
dayOfTheWeek = "Sat";
} else if (i==1){
dayOfTheWeek = "Sun";
}
3 ответов
TimeZone timezone = TimeZone.getDefault();
Calendar calendar = new GregorianCalendar(timezone);
calendar.set(year, month, day, hour, minute, second);
String monthName=calendar.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.getDefault());//Locale.US);
String dayName=calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.getDefault());//Locale.US);
Joda Времени
я использую Joda Времени библиотека для всех операций, связанных с датой/временем. Joda учитывает вашу локаль и получает результаты соответственно:
import org.joda.time.DateTime;
DateTime date = new DateTime(year, month, day, 0, 0, 0);
или
DateTime date = DateTime().now();
день недели (int):
date.getDayOfWeek();
день недели (короткая строка) с помощью toString()
и DateTimeFormat
варианты:
date.toString("EE");
tl; dr
myGregCal // `GregorianCalendar` is a legacy class, supplanted by the modern `java.time.ZonedDateTime` class.
.toZonedDateTime() // Convert to `ZonedDateTime`.
.getDayOfWeek(). // Extract a `DayOfWeek` enum object, one of seven pre-defined objects, one for each day of the week.
.getDisplayName( // Automatically localize, generating a `String` to represent the name of the day of the week.
TextStyle.SHORT , // Specify how long or abbreviated.
Locale.US // Locale determines the human language and cultural norms used in localization.
) // Returns a `String` object.
Мон
LocalDate.now( ZoneId.of( "Africa/Tunis" ) ) // Get current date for people in a certain region, without time-of-day and without time zone.
.getDayOfWeek() // Extract a `DayOfWeek` enum object.
.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) // Generate a string representing that day-of-week, localized using the human language and cultural norms of a particular locale.
лунди
java.время
преобразовать хлопотное старое наследие java.util.GregorianCalendar
объект для современной java.время объекта путем вызова новых методов, добавленных в старый класс.
ZonedDateTime zdt = myGregCal.toZonedDateTime();
скачать DayOfWeek
перечислить объект для этого момента в этом часовом поясе.
DayOfWeek dow = zdt.getDayOfWeek();
ДОУ.метод toString(): Среда
пройти эти DayOfWeek
объекты вокруг вашего кода, а не передавать целые числа, такие как 1-7 или строки, такие как "MON". Используя объекты перечисления, можно сделать код более самодокументированным, обеспечить безопасность типов и диапазон допустимых значений.
для представления пользователю, спросите DayOfWeek
объект для перевода названия дня недели на человеческий язык, определенный в Locale
.
String output =
dow.getDisplayName(
TextStyle.FULL_STANDALONE ,
Locale.CANADA_FRENCH
)
;
mercredi
о java.время
на java.время framework встроен в Java 8 и более поздние версии. Эти классы вытесняют беспокойных старых наследие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
на Joda Времени, теперь ремонт режим, советует миграцию в java.время классы.
чтобы узнать больше, см. В Oracle Учебник. И search Stack Overflow для многих примеров и объяснений. Спецификация JSR 310.
вы можете обменять java.время объекты непосредственно с вашей базой данных. Используйте драйвер JDBC соответствуют JDBC 4.2 или позже. Нет нужды в струнах, нет нужды. для java.sql.*
классы.
где получить java.время занятий?
-
Java SE 8, Java SE 9, Java SE 10, и позже
- встроенный.
- часть стандартного API Java со встроенной реализацией.
- Java 9 добавляет некоторые незначительные функции и зафиксировать.
-
Java SE 6 и Java SE 7
- большая часть java.функциональность времени обратно портирована на Java 6 & 7 в ThreeTen-Backport.
-
Android
- более поздние версии Android bundle реализации java.время классы.
- для более раннего Android (ThreeTenABP проект приспосабливается ThreeTen-Backport (упоминалось выше). См.как использовать ThreeTenABP....