【问题标题】:Set Calendar to first week of a month in Java在 Java 中将日历设置为一个月的第一周
【发布时间】:2017-02-28 13:09:51
【问题描述】:

我正在尝试将日历对象 -> 今天设置为一个月第一周的特定日期。

    Calendar today = Calendar.getInstance();

    today.set(Calendar.HOUR_OF_DAY, 0); // ! clear would not reset the hour of day !
    today.clear(Calendar.MINUTE);
    today.clear(Calendar.SECOND);
    today.clear(Calendar.MILLISECOND);
    today.getTime();

    today.set(Calendar.YEAR,year);
    today.set(Calendar.MONTH, month);
    today.set(Calendar.WEEK_OF_MONTH,today.getActualMinimum(Calendar.WEEK_OF_MONTH));
    today.set(Calendar.DAY_OF_WEEK, getDay()+1);

    Log.d(TAG, "Test : "+getName()+", time : "+ today.getTime()+"  ,year : "+year+"   ,month : "+ month);

问题是,日历正在返回当前星期的日期。

【问题讨论】:

    标签: java android calendar


    【解决方案1】:

    使用下面的代码:

    public static String getEightWeeksDateString() {
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-01 00:00:00");
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DATE, 0);
        return dateFormat.format(cal.getTime());
    }
    

    这会返回字符串格式的日期,然后你应该把它转换成你想要的

    【讨论】:

    • 上述方法返回月份的第一个日期字符串,但我想将today 设置为第一周的某一天。
    • 只修改return语句,直接转换成日期
    • 对不起,我不明白你。如果您通过代码解释,我将不胜感激。
    • public static Date getEightWeeksDateString() throws ParseException { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-01 00:00:00");日历 cal = Calendar.getInstance(); cal.add(日历.DATE, 0);字符串 str=dateFormat.format(cal.getTime()); return new SimpleDateFormat("yyyy-MM-01 00:00:00").parse(str); }
    • 试试这个,如果你想修改日期模式
    【解决方案2】:
     Calendar c = Calendar.getInstance();   // this takes current date
        c.set(Calendar.DAY_OF_MONTH, 1);
    

    【讨论】:

    • 我放了这条线,但它仍然返回相同
    • stackoverflow.com/questions/14241836/… Calendar c = Calendar.getInstance(); // 这需要当前日期 c.set(Calendar.DAY_OF_MONTH, 1); System.out.println(c.getTime()); // 这会返回 java.util.Date
    • 我想将星期几设置为day,将星期设置为每月的第一周。
    【解决方案3】:

    课程日历中有一个 DAY_OF_MONTH 字段,如果您想完成目标,则需要更改该字段。查看documentation。你只需要使用 set 方法:

    today.set(Calendar.DAY_OF_MONTH, 1);
    

    【讨论】:

    • 仍然返回相同的结果。
    【解决方案4】:

    您可以使用以下代码。它将返回与今天相同但一个月的第一周的日期。

    public String getDayFromFirstWeek() {
        DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy",Locale.getDefault());
    
        Calendar date = Calendar.getInstance(Locale.getDefault());
        date.set(Calendar.DAY_OF_MONTH, 1);
        date.add(Calendar.DAY_OF_YEAR, (date.get(Calendar.DAY_OF_WEEK)+ Calendar.getInstance().get(Calendar.DAY_OF_WEEK) - 1) % 7);
        return formatter.format(date.getTime());
    }
    

    【讨论】:

      猜你喜欢
      • 2014-08-28
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 2022-11-25
      • 2017-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多