Calendar日历类
- 格式:pdf
- 大小:66.59 KB
- 文档页数:2
Calendar⽇历类
Calendar 类是⼀个抽象类,为我们提供了关于⽇期计算的相关功能,⽐如:年、⽉、⽇、时、分、秒的展⽰和计算。
GregorianCalendar 是 Calendar 的⼀个具体⼦类,提供了世界上⼤多数国家/地区使⽤的标准⽇历系统。
菜鸟雷区
注意⽉份的表⽰,⼀⽉是0,⼆⽉是1,以此类推,12⽉是11。 因为⼤多数⼈习惯于使⽤单词⽽不是使⽤数字来表⽰⽉份,这样程序也许
更易读,⽗类Calendar使⽤常量来表⽰⽉份:JANUARY、FEBRUARY等等。
【⽰例】GregorianCalendar类和Calendar类的使⽤
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50import java.util.*;
public class TestCalendar {
public static void main(String[] args) { // 得到相关⽇期元素 GregorianCalendar calendar = new GregorianCalendar(2999, 10, 9, 22, 10, 50);
int year = calendar.get(Calendar.YEAR); // 打印:1999
int month = calendar.get(Calendar.MONTH); // 打印:10
int day = calendar.get(Calendar.DAY_OF_MONTH); // 打印:9
int day2 = calendar.get(Calendar.DATE); // 打印:9 // ⽇:Calendar.DATE和Calendar.DAY_OF_MONTH同义 int date = calendar.get(Calendar.DAY_OF_WEEK); // 打印:3 // 星期⼏ 这⾥是:1-7.周⽇是1,周⼀是2,。。。周六是7 System.out.println(year); System.out.println(month); System.out.println(day); System.out.println(day2); System.out.println(date); // 设置⽇期 GregorianCalendar calendar2 = new GregorianCalendar(); calendar2.set(Calendar.YEAR, 2999); calendar2.set(Calendar.MONTH, Calendar.FEBRUARY); // ⽉份数:0-11 calendar2.set(Calendar.DATE, 3); calendar2.set(Calendar.HOUR_OF_DAY, 10); calendar2.set(Calendar.MINUTE, 20); calendar2.set(Calendar.SECOND, 23); printCalendar(calendar2); // ⽇期计算 GregorianCalendar calendar3 = new GregorianCalendar(2999, 10, 9, 22, 10, 50); calendar3.add(Calendar.MONTH, -7); // ⽉份减7 calendar3.add(Calendar.DATE, 7); // 增加7天 printCalendar(calendar3); // ⽇历对象和时间对象转化 Date d = calendar3.getTime(); GregorianCalendar calendar4 = new GregorianCalendar();
calendar4.setTime(new Date());
long g = System.currentTimeMillis(); } static void printCalendar(Calendar calendar) {
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
int date = calendar.get(Calendar.DAY_OF_WEEK) - 1; // 星期⼏
String week = "" + ((date == 0) ? "⽇" : date);
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND); System.out.printf("%d年%d⽉%d⽇,星期%s %d:%d:%d\n", year, month, day, week, hour, minute, second); }}
执⾏结果如图所⽰:
编写程序,利⽤GregorianCalendar类,打印当前⽉份的⽇历,今天的⽇期是 2017-05-18 ,如图所⽰为今⽇所在⽉份的⽇历:
【⽰例】可视化⽇历的编写
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49import java.text.ParseException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Scanner;
public class TestCalendar2 {
public static void main(String[] args) throws ParseException { System.out.println("请输⼊⽇期(格式为:2010-3-3):"); Scanner scanner = new Scanner(System.in); String dateString = scanner.nextLine(); // 2010-3-1 // 将输⼊的字符串转化成⽇期类 System.out.println("您刚刚输⼊的⽇期是:" + dateString); String[] str = dateString.split("-"); int year = Integer.parseInt(str[0]);
int month = new Integer(str[1]);
int day = new Integer(str[2]);
Calendar c = new GregorianCalendar(year, month - 1, day); // Month:0-11 // ⼤家⾃⼰补充另⼀种⽅式:将字符串通过SImpleDateFormat转化成Date对象, //再将Date对象转化成⽇期类 // SimpleDateFormat sdfDateFormat = new SimpleDateFormat("yyyy-MM-dd"); // Date date = sdfDateFormat.parse(dateString); // Calendar c = new GregorianCalendar(); // c.setTime(date); // int day = c.get(Calendar.DATE); c.set(Calendar.DATE, 1); int dow = c.get(Calendar.DAY_OF_WEEK); // week:1-7 ⽇⼀⼆三四五六 System.out.println("⽇\t⼀\t⼆\t三\t四\t五\t六"); for (int i = 0; i < dow - 1; i++) { System.out.print("\t"); } int maxDate = c.getActualMaximum(Calendar.DATE); // System.out.println("maxDate:"+maxDate); for (int i = 1; i <= maxDate; i++) {
StringBuilder sBuilder = new StringBuilder();
if (c.get(Calendar.DATE) == day) { sBuilder.append(c.get(Calendar.DATE) + "*\t"); } else { sBuilder.append(c.get(Calendar.DATE) + "\t"); } System.out.print(sBuilder); // System.out.print(c.get(Calendar.DATE)+ // ((c.get(Calendar.DATE)==day)?"*":"")+"\t");
if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) { System.out.print("\n"); } c.add(Calendar.DATE, 1); } }}