Featured image of post Java时间类api

Java时间类api

常见的Java时间相关的api学习

时间类 API

在日常学习生活中,我们经常遇到时间相关的问题,现在虽然 Date 类已经不是主流了,但任然有许多方法要学习

DateFormat

使用示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
package APICourceCode;

import java.text.DateFormat;
import java.util.Date;

public class dateAPI {
	public static void main(String[] args) {
		Date date = new Date();
		DateFormat ses = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
		String sesa = ses.format(date);
		System.out.println(sesa);
	}
}

其常见的Style如下

1
2
3
4
FULL:2019年12月16日 星期一 下午06时38分17秒 CST
LONG:2019年12月16日 下午06时39分20秒
MEDIUM:2019-12-16 18:39:41 (默认方式)
SHORT:19-12-16 下午6:40

如果需要自定义的格式,就需要按照下面的表格自定义,自定义以后,系统自带的Style将不生效

字母 意义
y
M 月份
w 年份中的周数
W 月份中的周数
d 月份中的天数
D 年份中的天数
F 月份中的星期
E 星期中的天数
a am/pm 表示上下午
H 一天中的小时数(0-23)
h am/pm 中的一天小时数(1-12)
m 小时中的分钟数
s 分钟中的秒数
S 毫秒数
z PST;GMT 时区
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
package APICourceCode;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class dateAPI {
	public static void main(String[] args) {
		Date date = new Date();
		DateFormat ses = DateFormat.getDateTimeInstance();
		ses = new SimpleDateFormat("yyyy/MM/dd HH-mm-ss-SS");
		String sesa = ses.format(date);
		System.out.println(sesa);
		
	}
}

总结:

DateFormat方法其实很简单,

① 首先new一个Date类对象,就不用管了

② 调用DateFormat方法对象(不需要 new),生成自定义的Style

③ 使用字符串接收DateFormat对象的Format方法,需要传Date类的对象

DateFormat 反解析

使用示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
package APICourceCode;

import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;

public class ReverseDateFormat {
	public static void main(String[] args) throws ParseException {
		String str = "2019-07-02";
		DateFormat se = DateFormat.getDateInstance();
		Date date =se.parse(str);
		System.out.println(date);
	}
}

Calendar

使用示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
package APICourceCode;

import java.util.Calendar;

public class CalenderL {
	public static void main(String[] args) {
		Calendar se = Calendar.getInstance();
		
		se.add(Calendar.YEAR, 1);
		
		int year = se.get(Calendar.YEAR);
		int month = se.get(Calendar.MONTH)+1;
		int day = se.get(Calendar.DAY_OF_MONTH);
		int hours = se.get(Calendar.HOUR_OF_DAY);
		int minute = se.get(Calendar.MINUTE);
		int sec = se.get(Calendar.SECOND);
		System.out.println(year + "-" + month + "-" + day + "-" + hours + "-" + minute + "-" + sec);
	}
}
----------
2020-12-16-20-16-53

常见的Calendar参数

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
java.util.GregorianCalendar[
time=1576496255445,
firstDayOfWeek=1,
YEAR=2019,
MONTH=11,
WEEK_OF_YEAR=51,
WEEK_OF_MONTH=3,
DAY_OF_MONTH=16,
DAY_OF_YEAR=350,
DAY_OF_WEEK=2,
DAY_OF_WEEK_IN_MONTH=3,
HOUR=7,
HOUR_OF_DAY=19,
MINUTE=37,
SECOND=35,
MILLISECOND=445]

日期的偏移

1
se.add(Calendar.MONTH, 1);

个人认为作用不是很大

Licensed under CC BY-NC-SA 4.0