0%

Java(18)Calender类和System类

Calender类

  • java.util.Calendar类:日历类

  • Calendar类是一个抽象类,里面提供了很多操作日历字段的方法()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.tipdm.Demo02;

import java.util.Calendar;

/**
* java.util.Calendar类:日历类
* Calendar类是一个抽象类,里面提供了很多操作日历字段的方法()
* Calendar类无法直接创建对象使用,里面有一个静态方法叫getInstance(),该方法返回了Calendar类的子类对象。
* static Calendar getInstance()
* 使用默认时区和语言环境获得一个日历。
*/
public class demo5Calendar {
public static void main(String[] args) {
Calendar c = Calendar.getInstance(); // 多态
System.out.println(c); // [time=1639557716853,areFieldsSet=true,areAllFieldsS....

}
}
1
2
3
java.util.GregorianCalendar[time=1686479358061,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2023,MONTH=5,WEEK_OF_YEAR=24,WEEK_OF_MONTH=3,DAY_OF_MONTH=11,DAY_OF_YEAR=162,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=6,HOUR_OF_DAY=18,MINUTE=29,SECOND=18,MILLISECOND=61,ZONE_OFFSET=28800000,DST_OFFSET=0]

进程已结束,退出代码0
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package com.tipdm.Demo02;

import java.util.Calendar;
import java.util.Date;

/**
* Calendar类的常用成员方法:
* public int get(int field):返回给定日历字段的值。
* public void set(int field, int value):将给定的日历字段设置为给定值。
* public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
* public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
* 成员方法的参数:
* int field:日历类字段,可以使用Calendar类的静态成员变量获取
* public static final int YEAR = 1; 年
* public static final int MONTH = 2; 月
* public static final int DATE = 5; 月中的某一天
* public static final int DAY_OF_MONTH = 5; 月中的第一天
* public static final int HOUR = 10; 时
* public static final int MINUTE = 12; 分
* public static final int SECOND = 13; 秒
*/
public class demo5Calendar2 {
public static void main(String[] args) {
demo01();
System.out.println("=================");
demo02();
System.out.println("=================");
demo03();
System.out.println("=================");
demo04();
}

/**
* public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
* 把日历对象转化为日期对象
*/
private static void demo04() {
// 使用getInstance方法获取Calendar对象
Calendar c = Calendar.getInstance();

Date date = c.getTime();
System.out.println(date);
}

/**
* public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
* 把指定的字段增加/减少指定的值
* 参数:
* 1. int field 传递指定的日历字段(YEAR,MONTH...)
* 2. int amount 增加/减少指定的值
* 正数:增加
* 负数:减少
*
*/
private static void demo03() {
// 使用getInstance方法获取Calendar对象
Calendar c = Calendar.getInstance();

// 把年增加2年
c.add(Calendar.YEAR, 2);

// 把月减少3个月
c.add(Calendar.MONTH, -3);

int year = c.get(Calendar.YEAR); // 获取当前日期 年
System.out.println(year); // 2023

int month = c.get(Calendar.MONTH); // 获取当前日期 月
System.out.println(month); // 11 西方的月份0-11;东方的月份1-12。

int date = c.get(Calendar.DAY_OF_MONTH); // 获取当前日期 日
System.out.println(date); // 15
}

/**
* public void set(int field, int value):将给定的日历字段设置为给定值。
* 参数:
* 1. int field 传递指定的日历字段(YEAR,MONTH...)
* 2. int value 给指定字段设定的值
*/
private static void demo02() {
// 使用getInstance方法获取Calendar对象
Calendar c = Calendar.getInstance();
// 设置年为9999年
c.set(Calendar.YEAR, 9999);
// 设置月为9月
c.set(Calendar.MONTH, 9);
// 设置日为9日
c.set(Calendar.DATE, 9);
// 同时设置年月日,可以使用set的重载方法
c.set(1997, 11, 24);
int year = c.get(Calendar.YEAR); // 获取当前日期 年
System.out.println(year); // 1997

int month = c.get(Calendar.MONTH); // 获取当前日期 月
System.out.println(month); // 11 西方的月份0-11;东方的月份1-12。

int date = c.get(Calendar.DAY_OF_MONTH); // 获取当前日期 日
System.out.println(date); // 24
}

/**
* public int get(int field):返回给定日历字段的值。
* 参数:传递指定的日历字段(YEAR,MONTH...)
* 返回值:日历字段代表的具体的值
*/
private static void demo01() {
// 使用getInstance方法获取Calendar对象
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR); // 获取当前日期 年
System.out.println(year); // 2021

int month = c.get(Calendar.MONTH); // 获取当前日期 月
System.out.println(month); // 11 西方的月份0-11;东方的月份1-12。

int date = c.get(Calendar.DAY_OF_MONTH); // 获取当前日期 日
System.out.println(date); // 15
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2023
5
11
=================
1997
11
24
=================
2025
2
11
=================
Sun Jun 11 18:32:23 CST 2023

进程已结束,退出代码0

System类

Java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有:

26.1 public static long currentTimeMillis()

返回以毫秒为单位的当前时间。

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
package com.tipdm.Demo03;

import java.util.Arrays;

/**
* Java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有:
* public static long currentTimeMillis():
* 返回以毫秒为单位的当前时间。
* public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):
* 将数组中指定的数据拷贝到另一个数组中。
*/
public class Demo01System {
public static void main(String[] args) {
demo01();
}

/**
* public static long currentTimeMillis():
* 返回以毫秒为单位的当前时间。
* 用来测试程序的效率
*/
private static void demo01() {
long startTime = System.currentTimeMillis();
for (int i = 0; i < 9999; i++) {
System.out.println(i);
}
long endTime = System.currentTimeMillis();
System.out.println("耗时:" + (endTime - startTime) + "毫秒");
}
}
1
2
3
4
5
6
7
8
0
1
2
...
9996
9997
9998
耗时:26毫秒

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

将数组中指定的数据拷贝到另一个数组中。

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
package com.tipdm.Demo03;

import java.util.Arrays;

public class Demo01System {
public static void main(String[] args) {
demo02();
}

/**
* public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):
* 将数组中指定的数据拷贝到另一个数组中。
* 参数:
* src - 源数组。
* srcPos - 源数组中的起始位置。(起始索引)
* dest - 目标数组。
* destPos - 目标数据中的起始位置。
* length - 要复制的数组元素的数量。
*
* 练习:
* 将src数组中前3个元素,复制到dest数组的前3个位置上
* 复制元素前:
* src数组元素[1,2,3,4,5],
* dest数组元素[6,7,8,9,10]
* 复制元素后:
* src数组元素[1,2,3,4,5]
* dest数组元素[1,2,3,9,10]
*/
private static void demo02() {
int[] src = {1, 2, 3, 4, 5};
int[] dest = {6, 7, 8, 9, 10};
System.out.println(Arrays.toString(src));
System.out.println(Arrays.toString(dest));
System.out.println("==================");
System.arraycopy(src, 0, dest, 0, 3);
System.out.println(Arrays.toString(src));
System.out.println(Arrays.toString(dest));
}
}
1
2
3
4
5
6
7
[1, 2, 3, 4, 5]
[6, 7, 8, 9, 10]
==================
[1, 2, 3, 4, 5]
[1, 2, 3, 9, 10]

进程已结束,退出代码0
-------------本文结束感谢您的阅读-------------