如何在android中获取当周第一天的日期

时间:2015-10-24 14:13:28

标签: java android date

您好我正在开展一个项目,我需要以yyyy-MM-dd的格式获取一周中第一天的日期并在TextView中显示,我尝试了this解决方案但我得到了与使用DateCalendar类相混淆,我尝试了下面的代码但总是得到完整的日期字符串或错误的日期我的总体目的是获取一周的第一天的日期< / strong>任何编写代码的人或解释DateCalendar类之间的区别我会很感激。 谢谢 这是代码

 int year, month, day;

    tvTest = (TextView) findViewById(R.id.tvTheoryStudies);

    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);


    year = cal.get(Calendar.YEAR);
    month = cal.get(Calendar.MONTH);
    day = cal.get(Calendar.DAY_OF_MONTH);
    String todayDate = new StringBuilder().append(year).append("-").append(month).append("-").append(day).toString();


    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    cal.set(Calendar.DAY_OF_WEEK, 1);
    Date date =new Date();

    try {
        date = sdf.parse(todayDate);
    }
    catch (Exception e){
        e.printStackTrace();
    }


    cal.setTime(date);
    date = cal.getTime();
    tvTest.setText(date.toString());

1 个答案:

答案 0 :(得分:1)

你使它变得比它需要的复杂得多。

以下代码将为您提供所需内容:

    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    String outputDate = simpleDateFormat.format(calendar.getTime());

Calendar.getInstance()将Calendar对象设置为今天的日期 然后我将DAY_OF_WEEK设置为MONDAY(请注意,Calendar.MONDAY的常量值为2,而不是1.这可以在文档中看到。)
我设置了一个格式正确的SimpleDateFormat,然后我在日历对象上使用getTime()来获取一个Date对象,我将它传递给SimpleDateFormat。

Date类和Calendar类之间的区别在于Calendar类用于对日期进行操作(加,减,比较等),而Date类仅用于保存日期,并打印它在屏幕上供用户查看。

所以你应该总是在代码中有一个Calendar对象,然后在向用户显示时将其转换为上面的代码。与Date类相比,Calendar类有更多的函数可以使用,而且通常更容易。