получить дату начала и окончания недели - PullRequest
0 голосов
/ 25 апреля 2018

На самом деле я хочу отобразить набор данных с начальной и конечной датой недели, на которую попадает данная конкретная дата.В моем эмуляторе все работает нормально.Например.Если я назначу 23 апреля, то для меня начальная дата недели будет 22 апреля, а конечная дата - 28 апреля, но если я попытаюсь создать такой же код на своем устройстве, то начальная дата недели будет 27 апреля, а конечная дата - 28 апреля.Апр.

Часть кода, который я использую:

      //to get first day of week
                    cal1.set(Calendar.DAY_OF_WEEK, 1);
                    int day1 = cal1.get(Calendar.DAY_OF_MONTH);

     //to get last day of week
                    cal1.set(Calendar.DAY_OF_WEEK, 7);
                    int day7 = cal1.get(Calendar.DAY_OF_MONTH);

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Чтобы получить первый день недели -

  1. инициализируйте Календарь в соответствии с вашими потребностями.в этом случае я получаю календарь текущей даты.
  2. устанавливаю текущий день недели на первый день недели.
  3. получаем соответствующая дата .

    Calendar calendar = Calendar.getInstance();
    //optional step
    calendar.setFirstDayOfWeek(Calendar.SUNDAY);
    calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
    int firstDateOfWeek = calendar.get(Calendar.DATE);
    

Чтобы получить последнюю дату недели -

  1. , следуйтедля инициализации выполните описанные выше действия.
  2. установите день недели как субботу.
  3. получите соответствующую дату.

    Calendar calendar = Calendar.getInstance();
    //optional step
    calendar.setFirstDayOfWeek(Calendar.SUNDAY);
    calendar.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
    int lastDateOfWeek = calendar.get(Calendar.DATE);
    

Таким образом, вы можете получить ах первый и последний день недели.Следует иметь в виду, что я установил первый день недели как воскресенье.установить в соответствии с вашими потребностями.хотя это просто необязательно, чтобы установить первый день недели.это дает вам большую прозрачность в коде.

0 голосов
/ 25 апреля 2018

Я не знаю, почему вы получаете эти данные, но вот как я получаю первое и последнее свидание, может помочь проверка.(написано, чтобы дать первую и последнюю дату текущей недели, поэтому, возможно, придется немного ее настроить.)

Calendar calendar = Calendar.getInstance ();

Date date1 = calendar.getTime();
//current date to check that our week lies in same month or not
SimpleDateFormat checkformate = new SimpleDateFormat("MM/yyyy");
String currentCheckdate= checkformate.format(date1);

int weekn = calendar.get(Calendar.WEEK_OF_MONTH);
int month = calendar.get(Calendar.MONTH);
int year  = calendar.get(Calendar.YEAR);
//resat calender without date
calendar.clear();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.set(Calendar.WEEK_OF_MONTH,weekn);
calendar.set(Calendar.MONTH,month);
calendar.set(Calendar.YEAR,year);

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");

Date datef = calendar.getTime();
//move date to 6 days + to get last date of week
Long timeSixDayPlus = calendar.getTimeInMillis()+518400000L;
Date dateL = new Date(timeSixDayPlus);
String firtdate = simpleDateFormat.format(datef);
String lastdate = simpleDateFormat.format(dateL);
String firtdateCheck = checkformate.format(datef);
String lastdateCheck = checkformate.format(dateL);

//if our week lies in two different months then we show only current month week part only
if (!firtdateCheck.toString().equalsIgnoreCase(currentCheckdate)) {
    firtdate = "1" + "/" + calendar.get(Calendar.MONTH) + "/" + calendar.get(Calendar.YEAR);
}
if (!lastdateCheck.toString().equalsIgnoreCase(currentCheckdate)) {
    int ma = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    lastdate = String.valueOf(ma) + "/" + calendar.get(Calendar.MONTH) + "/" + calendar.get(Calendar.YEAR);
}
Log.e("current","=>>"+firtdate+" to "+lastdate);
...