确定一周中的哪一天是一个月中的每个日期
Determine which day of week is each date of the month
我想用 Java 8 创建一个日历。到目前为止我有这个:
YearMonth yearMonthObject = YearMonth.of(year, month);
int daysOfCurrentMonth = yearMonthObject.lengthOfMonth();
int i = 1;
ArrayList<Integer> Dayes = new ArrayList<Integer>();
for(i=1; i<=daysOfCurrentMonth; i++){
Dayes.add(i);
}
Dayes.forEach(value -> System.out.print(value));
打印当前月份的天数(例如五月)。
如何确定1是星期日,2是星期一,3是星期二,...,8是星期日(下周)等?
你有一个 YearMonth
object. For each day of the month, you can call atDay(dayOfMonth)
to return a LocalDate
在那个月的特定日期。有了那个 LocalDate
,您就可以调用:
getDayOfMonth()
以 int
; 的形式返回一个月中的第几天
getDayOfWeek()
to get the day of the week as a DayOfWeek
。这是一周中所有日子的枚举。
因此,您应该将 Dayes
列表更改为包含 LocalDate
而不是 Integer
,然后您可以拥有,例如:
YearMonth yearMonthObject = YearMonth.of(year, month);
int daysOfCurrentMonth = yearMonthObject.lengthOfMonth();
ArrayList<LocalDate> dayes = new ArrayList<LocalDate>();
for(int i = 1; i <= daysOfCurrentMonth; i++){
dayes.add(yearMonthObject.atDay(i));
}
dayes.forEach(value -> System.out.println(value.getDayOfMonth() + " " + value.getDayOfWeek()));
这将打印该月的每一天,然后是相应的星期几。
作为旁注,您可以通过调用 getDisplayName(style, locale)
获得星期几的真实显示值(而不是上面枚举的 name()
)。样式表示如何书写日期(长格式、短格式...),区域设置是用于显示名称的区域设置。一个例子是:
value.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.ENGLISH)
这将以英文输出星期几的全文。具有上述更改的 04/2016 的示例输出:
1 Friday
2 Saturday
3 Sunday
4 Monday
5 Tuesday
这可能有点像 'hack' 解决方案,但如果您要为 任何 年制作日历,您可能必须使用 'anchor date'(如1800年1月1日为星期三)。然后,您可以计算从 1800 年 1 月 1 日到您当前 year/month/day 之间发生的天数。一旦计算出已经过去了多少天,使用 Modular 7 就可以确定今天是哪一天,然后从那里填充该月的日历。
我想用 Java 8 创建一个日历。到目前为止我有这个:
YearMonth yearMonthObject = YearMonth.of(year, month);
int daysOfCurrentMonth = yearMonthObject.lengthOfMonth();
int i = 1;
ArrayList<Integer> Dayes = new ArrayList<Integer>();
for(i=1; i<=daysOfCurrentMonth; i++){
Dayes.add(i);
}
Dayes.forEach(value -> System.out.print(value));
打印当前月份的天数(例如五月)。
如何确定1是星期日,2是星期一,3是星期二,...,8是星期日(下周)等?
你有一个 YearMonth
object. For each day of the month, you can call atDay(dayOfMonth)
to return a LocalDate
在那个月的特定日期。有了那个 LocalDate
,您就可以调用:
getDayOfMonth()
以int
; 的形式返回一个月中的第几天
getDayOfWeek()
to get the day of the week as aDayOfWeek
。这是一周中所有日子的枚举。
因此,您应该将 Dayes
列表更改为包含 LocalDate
而不是 Integer
,然后您可以拥有,例如:
YearMonth yearMonthObject = YearMonth.of(year, month);
int daysOfCurrentMonth = yearMonthObject.lengthOfMonth();
ArrayList<LocalDate> dayes = new ArrayList<LocalDate>();
for(int i = 1; i <= daysOfCurrentMonth; i++){
dayes.add(yearMonthObject.atDay(i));
}
dayes.forEach(value -> System.out.println(value.getDayOfMonth() + " " + value.getDayOfWeek()));
这将打印该月的每一天,然后是相应的星期几。
作为旁注,您可以通过调用 getDisplayName(style, locale)
获得星期几的真实显示值(而不是上面枚举的 name()
)。样式表示如何书写日期(长格式、短格式...),区域设置是用于显示名称的区域设置。一个例子是:
value.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.ENGLISH)
这将以英文输出星期几的全文。具有上述更改的 04/2016 的示例输出:
1 Friday
2 Saturday
3 Sunday
4 Monday
5 Tuesday
这可能有点像 'hack' 解决方案,但如果您要为 任何 年制作日历,您可能必须使用 'anchor date'(如1800年1月1日为星期三)。然后,您可以计算从 1800 年 1 月 1 日到您当前 year/month/day 之间发生的天数。一旦计算出已经过去了多少天,使用 Modular 7 就可以确定今天是哪一天,然后从那里填充该月的日历。