2013-03-01 5 views
0

Я использую DatePickerDialog, чтобы показать календарь. Я хочу получить доступ к Первому и последнему дню недели выбранной даты.Как получить первый день и последний день недели даты

Вот что я пытался

 this.tv_date.setText(new StringBuilder() 
     // Month is 0 based so add 1 
        .append(mDay).append("-") 
        .append(monthName).append("-") 
        .append(mYear).append("")); 
     tv_date.setHighlightColor(Color.CYAN); 

     String str=mDay+"-"+mMonth+"-"+mYear; 

     SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); 
     sdf.format(""+str); //here I am getting exception 

     Calendar cal=Calendar.getInstance(); 

     int s= cal.getFirstDayOfWeek(); 

     Toast.makeText(getApplicationContext(), "first day of the week : "+s, 1).show(); 

Но я получаю "IllegalArguementException". Пожалуйста, помогите мне

Благодаря

ответ

4

sdf.format(""+str); - это неправильно. Вам либо нужно передать объект Date, либо изменить его на sdf.parse(str);, чтобы получить от него объект Date.

Редактировать: - Чтобы получить первый день недели, сделайте это.

String str=mDay+"-"+mMonth+"-"+mYear; 
SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); 
Date myDate = new Date(); 
try{ 
    myDate = sdf.parse(str); 
}catch(ParseException pe){ 
    // Do Something 
} 
Calendar cal = Calendar.getInstance(); 
cal.setTime(myDate); 
cal.set(Calendar.DAY_OF_WEEK, 1); 
int s = cal.get(Calendar.DATE); 
+0

спасибо! Но Toast показывает мне 1 каждый раз, даже если я выбираю другую дату. как получить первый день недели. –

+0

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

+0

его работа для всех случаев. Я тестировал его перед публикацией. Просто сейчас проверено снова для '13-02-2013' и получилось как' 10'. – SudoRahul

0

Ниже приведен пример расчета в первый день недели.

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); 
} 

Вместо назначения сегодня вы можете назначить любой другой день с точным форматом

+0

но, я думаю, DateTime класс не находится в android library –

Смежные вопросы