#java #date #calendar #simpledateformat #dayofweek
#java #Дата #Календарь #simpledateformat #день недели
Вопрос:
У меня есть этот простой код:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse("2011-10-29");
calendar.setTime(date);
Log.d("Debug","Day of the week = " (calendar.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY));
29 октября — суббота, так почему я получаю false?
Комментарии:
1. Какой язык использует ваш экземпляр календаря? Возможно, это имеет значение, потому что этот код возвращает true для меня.
2. Действительно? Я сделал Calendar.getInstance(); это неправильно?
3. @doubter: запишите календарную дату, чтобы увидеть, что вы передали в качестве даты
Ответ №1:
Вот пример того, как это может произойти…
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = format.parse("2011-10-29");
} catch (ParseException e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
calendar.setTime(date);
System.out.println("Day of the week = "
(calendar.get(Calendar.DAY_OF_WEEK)));
System.out.println("Saturday? "
(calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY));
try {
date = format.parse("2011-10-29");
} catch (ParseException e) {
e.printStackTrace();
}
calendar = Calendar.getInstance(TimeZone.getTimeZone("PST"));
calendar.setTime(date);
System.out.println("Day of the week = "
(calendar.get(Calendar.DAY_OF_WEEK)));
System.out.println("Saturday? "
(calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY));
который выводит
Day of the week = 7
Saturday? true
Day of the week = 6
Saturday? false
так что да, в зависимости от того, в каком часовом поясе вы находитесь, будет или не будет суббота.
Комментарии:
1. день недели не зависит от часового пояса, 2011-10-29 везде была суббота
Ответ №2:
Получение true с помощью следующего кода:
try {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse("2011-10-29");
Calendar cal = GregorianCalendar.getInstance();
cal.setTime(date);
System.out.println(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY);
}
catch(Exception e) {
e.printStackTrace();
}
Может быть, настройка локали?