Java Calendar использует Calendar.DAY_OF_WEEK, чтобы получить первые и последние даты для определенной даты - PullRequest
0 голосов
/ 14 июля 2011

В моем приложении лежит код, который иногда работает внезапно, он заключается в получении недельного интервала с использованием объекта календаря java через Calendar.DAY_OF_WEEK. Код проверяется на понедельник как начало недели и воскресенье как конец недели, например: fromCal.set (Calendar.DAY_OF_WEEK, Calendar.MONDAY); toCal.set (Calendar.DAY_OF_WEEK, Calendar.SUNDAY); toCal устанавливается как последнее воскресенье, а не наступающее воскресенье. Есть ли альтернативный способ сделать это, кроме этого вида жесткого кодирования.

Заранее оцените помощь.

Спасибо

Vaibhav

Ответы [ 3 ]

2 голосов
/ 14 июля 2011

Проблема в локали.В английском (США) воскресенье - первый день недели.Проверьте этот код:

Calendar cal = Calendar.getInstance(Locale.ENGLISH);
    cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
    System.out.println("FirstDayOfWeek="+cal.getFirstDayOfWeek());
    System.out.println(cal.getTime().toString());
    cal = Calendar.getInstance(Locale.FRANCE);
    System.out.println("FirstDayOfWeek="+cal.getFirstDayOfWeek());
    cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
    System.out.println(cal.getTime().toString());
2 голосов
/ 14 июля 2011

Полагаю, вам нужно установить начало недели на понедельник, иначе последнее воскресенье - это воскресенье недели.

setFirstDayOfWeek

public void setFirstDayOfWeek (значение типа int)

Sets what the first day of the week is; e.g., Sunday in US, Monday in France.

**Parameters:**
    value - the given first day of the week.

Документация Java Calender

1 голос
/ 14 июля 2011

Будьте очень ясны в отношении вашего желаемого поведения здесь.Вы начинаете с объекта календаря, чьим «сейчас» является какой-то день недели, возможно, «сегодня».Вы звоните (DAY_OF_WEEK, ...).Какой эффект вы хотите, если сегодня календарь во вторник?Воскресенье?Понедельник?

Как видно из других ответов, то, что происходит, зависит от мнения Календаря о том, что такое Первый день недели.Итак, сначала установите это на выбранное вами значение.Затем вы (согласно этому ответу получите воскресенье и понедельник на текущей неделе, что может быть не тем, что вы хотите - что именно вам нужно, если сегодня воскресенье? - некоторые системы могут действительно быть "думать "о следующей неделе.

Лично я могу получить свой понедельник в соответствии с некоторыми деловыми правилами и воскресенье после добавления 6 дней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...