Java 检索给定月份一周的第一天

Java 检索给定月份一周的第一天,java,calendar,Java,Calendar,给定此代码,它将打印出正确的月份和年份,但似乎会显示通常不正确的随机日期。我已经看过一些链接,包括和 您可能应该使用Calendar.DAY\u OF_WEEK而不是Calendar.DAY\u OF_WEEK\u IN_MONTH public void dayOfTheWeek() { now.set(Calendar.YEAR, year); now.set(Calendar.MONTH, month); now.set(Calendar.DAY_OF_MONTH,

给定此代码,它将打印出正确的月份和年份,但似乎会显示通常不正确的随机日期。我已经看过一些链接,包括和


您可能应该使用
Calendar.DAY\u OF_WEEK
而不是
Calendar.DAY\u OF_WEEK\u IN_MONTH

public void dayOfTheWeek() {
    now.set(Calendar.YEAR, year);
    now.set(Calendar.MONTH, month);
    now.set(Calendar.DAY_OF_MONTH, 1);

    String[] strDays = new String[] {
      "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
    };
    JOptionPane.showMessageDialog(null, year);
    JOptionPane.showMessageDialog(null, monthString[month - 1]);
    JOptionPane.showMessageDialog(null, now.get(Calendar.DAY_OF_WEEK));
    JOptionPane.showMessageDialog(null, strDays[now.get(Calendar.DAY_OF_WEEK) -     1]);
  }

假设您有正确的
月份
年份
,您可以这样做:

now.set(Calendar.DATE, 1);
now.set(Calendar.MONTH, month);
now.set(Calendar.YEAR, year);
int dayOfWeek = now.get(Calendar.DAY_OF_WEEK);

更改设置顺序,设置月后的月日,不设置月内的周日。
now.set(Calendar.DATE, 1);
now.set(Calendar.MONTH, month);
now.set(Calendar.YEAR, year);
int dayOfWeek = now.get(Calendar.DAY_OF_WEEK);