Начало и конец недели на Android - PullRequest
5 голосов
/ 08 июля 2011

Интересно, как я могу рассчитать начальный и конечный дни текущей недели?Я обнаружил, что это не реализовано в стандартных библиотеках Android или таких библиотеках, как date4j.

Если есть какой-то простой и простой способ реализовать это?Или я должен снова внедрить велосипед?

Спасибо.

Ответы [ 6 ]

6 голосов
/ 31 июля 2011

Не требуется много кода, чтобы сделать это с date4j.Пример вычисления первого дня недели:

 private void firstDayOfThisWeek(){
    DateTime today = DateTime.today(TimeZone.getDefault()); 
    DateTime firstDayThisWeek = today; //start value 
    int todaysWeekday = today.getWeekDay();
    int SUNDAY = 1;
    if(todaysWeekday > SUNDAY){
      int numDaysFromSunday = todaysWeekday - SUNDAY;
      firstDayThisWeek = today.minusDays(numDaysFromSunday);
    }
    System.out.println("The first day of this week is : " + firstDayThisWeek);
  }

Выше приведено соглашение о том, что воскресенье - начало недели.В некоторых юрисдикциях это соглашение не применяется, поэтому вам придется изменить код для таких случаев.

5 голосов
/ 08 июля 2011

Может быть MonthDisplayHelper может быть полезным для вас.

Удачи!

1 голос
/ 04 октября 2017

Это то, что я использовал, чтобы получить дату:

 Calendar c = Calendar.getInstance();
 c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
 c.setFirstDayOfWeek(Calendar.MONDAY);

 startOfWeek = c.getTime();
1 голос
/ 17 июня 2014

Это сработало для меня ...

Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
cal.set(Calendar.DAY_OF_WEEK, cal.MONDAY);
String firstWkDay = String.valueOf(cal.getTime());
//cal.set(Calendar.DAY_OF_WEEK, cal.SUNDAY);
cal.add(Calendar.DAY_OF_WEEK, 6);
String lastWkDay =  String.valueOf(cal.getTime());

Для последнего дня недели вы можете использовать cal.set(Calendar.DAY_OF_WEEK, cal.SUNDAY);, но на некоторых устройствах он возвращает предыдущее воскресенье

1 голос
/ 09 декабря 2013

Этот вид работы с датой и временем часто проще с использованием библиотеки Joda-Time 2.3.

Взято из этого ответа на аналогичный вопрос.

LocalDate now = new LocalDate();
System.out.println( now.withDayOfWeek(DateTimeConstants.MONDAY) );
System.out.println( now.withDayOfWeek(DateTimeConstants.SUNDAY) ); 

Вы можете вызвать isBefore / isAfter и minusWeeks / plusWeeks , чтобы получить прошлые / будущие значения.

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

Попробуйте java.util.Calendar.getFirstDayOfWeek () ... тогда легко рассчитать последний день недели: http://developer.android.com/reference/java/util/Calendar.html#getFirstDayOfWeek()

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