Получение Дня от Объекта Даты - PullRequest
1 голос
/ 06 октября 2009

Я хочу посмотреть, есть ли у кого-нибудь дата. Я правильно это проверяю?

Calendar cal = Calendar.getInstance();
cal.setTime(someDate); // someDate is a Date
int day = cal.get(Calendar.DAY_OF_MONTH);
if(day == 0){
  // code //
} 

Ответы [ 4 ]

4 голосов
/ 06 октября 2009

Я не уверен, что вы подразумеваете под "имеет какой-либо день" - все даты будут иметь a день в них ...: -)

Кроме этого, вы, вероятно, хотите следующее:

Calendar cal = Calendar.getInstance();
cal.setTime(someDate); // someDate is a Date
int day = cal.get(Calendar.DAY_OF_WEEK);
if(day == Calendar.SUNDAY){
  // code //
}

Большое изменение заключается в том, что вы хотите получить поле DAY_OF_WEEK; ваш пример получает день в месяце (например, 15 сентября вернет «15»). Во-вторых, сравнение с Calendar.SUNDAY (или эквивалентным) является более четким и менее подверженным ошибкам, чем прямое сравнение с, например, 0, даже если код эквивалентен.

0 голосов
/ 06 января 2014

Правильный ответ Анджея Дойла правильный.


Вот только этот код, но с использованием библиотеки Joda-Time 2.3 и Java 7.

В отличие от java.util.Calendar , Joda-Time разумно использует счет на основе 1. Таким образом, дни недели пронумерованы от 1 до 7. Кроме того, Joda-Time использует стандартный подход ( ISO 8601 ), где понедельник является первым днем ​​недели (1).

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
// import org.joda.time.*;
// import org.joda.time.format.*;

// Specify time zone rather than rely on default.
// Time Zone list… http://joda-time.sourceforge.net/timezones.html  (not quite up-to-date, read page for details)
DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );

DateTime now = new DateTime( timeZone );
if( now.dayOfWeek().get() == DateTimeConstants.MONDAY ) {
    System.out.println( "Today is a Monday." );
} else {
    System.out.println( "Nope, today is some other day of week." );
}
0 голосов
/ 06 октября 2009

Если я правильно понимаю, вы хотите Calendar.DAY_OF_WEEK.

0 голосов
/ 06 октября 2009

У каждого объекта даты будет день. День месяца никогда не будет 0, хотя, он будет в диапазоне 1-31. Это означает, что ваша проверка всегда будет неудачной.

...