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); } }}