2013-03-01 108 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,即使我选择了其他日期。如何获得一周的第一天。 – 2013-03-01 07:15:42

+0

是的它目前(三月)的月份工作正常,但在上个月和下个月它显示错误的值。 – 2013-03-01 08:00:31

+0

其适用于所有情况。我在发布前测试过它。刚刚再次验证了'13-02-2013'并得到了输出为'10'。 – SudoRahul 2013-03-01 08:04:41

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库 – 2013-03-01 07:09:29