int week = cal.get(Calendar.DAY_OF_WEEK) - 1;
时间: 2024-05-23 17:16:12 浏览: 143
这行代码是获取当前日期是星期几的代码,其中cal是一个Calendar对象。Calendar类是Java中的一个日历类,它提供了处理日期、时间和日历的方法。get方法用于获取指定字段的值,Calendar.DAY_OF_WEEK表示获取当前日期是星期几的字段,它的取值范围是1-7,分别表示周日到周六。由于星期从周日开始计数,因此需要减1才能得到正确的星期数。
相关问题
编写程序,输入年份,打印出该年的年历(12个月的),如下图所示。 提示:使用Calendar类得到一个Calendar类对象,先求出输入年份的1月1日是星期几, 然后通过循环打印出每个月的日历,注意大小月和闰月问题。(首先实例化一个Calendar对象,然后将年份设置为输入的年份,将月份设置为1月,日期设置为1日。然后,我们通过调用get()方法来获取1月1日是星期几(get(Calendar.DAY_OF_WEEK)),这将帮助我们确定每个月份的第一天是星期几。接下来,我们循环打印出1到12月份的日历。对于每个月份,我们设置月份和日期为1,然后通过循环打印出这个月的每一天。在循环结束后,我们将月份加1,以便打印下一个月的日历。最后,我们打印出12月份的日历,这里只需要将第一个星期几减去第一个星期几所占的位数即可。)
好的,以下是Java代码实现:
```java
import java.util.Calendar;
public class YearCalendar {
public static void main(String[] args) {
int year = 2022; // 输入年份
int monthDays[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 每个月的天数(2月需要判断是否为闰年)
// 创建Calendar对象并设置年份
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
// 计算1月1日是星期几
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK) - 1;
// 循环打印12个月份的日历
for (int month = 0; month < 12; month++) {
// 打印月份的标题
System.out.println(String.format("\n%10s %d", getMonthName(month), year));
System.out.println("Su Mo Tu We Th Fr Sa");
// 判断2月份是否为闰年
if (month == 1 && isLeapYear(year)) {
monthDays[1] = 29;
} else {
monthDays[1] = 28;
}
// 打印月份的日历
for (int i = 0; i < dayOfWeek; i++) {
System.out.print(" ");
}
for (int day = 1; day <= monthDays[month]; day++) {
System.out.print(String.format("%2d ", day));
if ((day + dayOfWeek) % 7 == 0) {
System.out.println();
}
}
System.out.println();
// 计算下一个月份的第一天是星期几
dayOfWeek = (dayOfWeek + monthDays[month]) % 7;
}
}
// 判断是否为闰年
private static boolean isLeapYear(int year) {
return (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0));
}
// 获取月份的名称
private static String getMonthName(int month) {
String monthNames[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
return monthNames[month];
}
}
```
输入年份为2022时,输出的年历如下:
```
January 2022
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
February 2022
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28
March 2022
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
April 2022
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
May 2022
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
June 2022
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
July 2022
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
August 2022
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
September 2022
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
October 2022
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
November 2022
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
December 2022
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
```
calendar类判断工作日
Calendar类是Java中用于处理日期和时间的类,可以用于判断某个日期是否为工作日。
首先,我们需要利用Calendar类创建一个日期实例。可以使用`Calendar.getInstance()`来获取当前日期的Calendar对象。
然后,我们可以使用`get(Calendar.DAY_OF_WEEK)`方法获取该日期是星期几,返回的是一个整数,例如1代表星期日,2代表星期一,依此类推。
接下来,我们可以判断该日期是否为工作日。通常来说,工作日是星期一到星期五,所以我们可以使用一个条件语句来判断日期是否在1和6之间(星期日是1,星期六是7)。
下面是一个示例代码:
```java
import java.util.Calendar;
public class Main {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek >= 2 && dayOfWeek <= 6) {
System.out.println("今天是工作日");
} else {
System.out.println("今天不是工作日");
}
}
}
```
通过上述代码,我们可以根据当前日期来判断是否为工作日,并进行相应的处理。需要注意的是,Calendar类中的月份从0开始,即0代表1月,11代表12月,所以在实际操作中需要注意月份的计算。
阅读全文