JDK8 新增的日期时间API

新的时间及日期API位于 java.time 包中,下面是一些关键类。
Instant:代表的是时间戳。
LocalDate:不包含具体时间的日期。
LocalTime:不含日期的时间。
LocalDateTime:包含了日期及时间。
一、获取时间
(1)Instant(时间戳类)
JDK8获取时间戳特别简单。Instant类由一个静态的工厂方法now()可以返回当前时间戳。

Instant instant = Instant.now();
System.out.println("当前时间戳是:" + instant);//当前时间戳是:2018-09-06T10:14:29.460Z
Date date = Date.from(instant);
System.out.println("当前时间戳是:" + date);//当前时间戳是:Thu Sep 06 18:14:29 CST 2018
instant = date.toInstant();

可以看到,当前时间戳是包含日期和时间的,与java.util.Date很类似,事实上Instant就是JDK8以前的Date,可以使用这两个类中的方法在这两个类型之间进行转换。
(2)LocalDate
LocalDate类获取日期信息。格式为 2018-09-06

LocalDate nowDate = LocalDate.now();
System.out.println("今天的日期:" + nowDate);//今天的日期:2018-09-06
int year = nowDate.getYear();//年:一般用这个方法获取年
System.out.println("year:" + year);//year:2018
int month = nowDate.getMonthValue();//月:一般用这个方法获取月
System.out.println("month:" + month);//month:9
int day = nowDate.getDayOfMonth();//日:当月的第几天,一般用这个方法获取日
System.out.println("day:" + day);//day:6        
int dayOfYear = nowDate.getDayOfYear();//日:当年的第几天 System.out.println("dayOfYear:" + dayOfYear);//dayOfYear:249
     //星期
System.out.println(nowDate.getDayOfWeek());//THURSDAY
System.out.println(nowDate.getDayOfWeek().getValue());//4
    //月份
System.out.println(nowDate.getMonth());//SEPTEMBER
System.out.println(nowDate.getMonth().getValue());//9

(3)LocalTime
LocalTime类获取时间信息。格式为 15:33:56.749

LocalTime nowTime = LocalTime.now();
System.out.println("今天的时间:" + nowTime);//今天的时间:15:33:56.749
int hour = nowTime.getHour();//时
System.out.println("hour:" + hour);//hour:15
int minute = nowTime.getMinute();//分
System.out.println("minute:" + minute);//minute:33
int second = nowTime.getSecond();//秒
System.out.println("second:" + second);//second:56
int nano = nowTime.getNano();//纳秒
System.out.println("nano:" + nano);//nano:749000000

(4)LocalDateTime
LocalDateTime类获取日期时间信息。格式为 2018-09-06T15:33:56.750

LocalDateTime nowDateTime = LocalDateTime.now();
System.out.println("今天是:" + nowDateTime);//今天是:2018-09-06T15:33:56.750
System.out.println(nowDateTime.getYear());//年
System.out.println(nowDateTime.getMonthValue());//月
System.out.println(nowDateTime.getDayOfMonth());//日
System.out.println(nowDateTime.getHour());//时
System.out.println(nowDateTime.getMinute());//分
System.out.println(nowDateTime.getSecond());//秒
System.out.println(nowDateTime.getNano());//纳秒		       		    //日:当年的第几天
System.out.println("dayOfYear:"nowDateTime.getDayOfYear());//dayOfYear:249
     //星期
System.out.println(nowDateTime.getDayOfWeek());//THURSDAY
System.out.println(nowDateTime.getDayOfWeek().getValue());//4
	//月份
System.out.println(nowDateTime.getMonth());//SEPTEMBER
System.out.println(nowDateTime.getMonth().getValue());//9

二、获取指定时间
(1)LocalDate

System.out.println(LocalDate.of(1991, 11, 11));//直接传入对应的年月日
System.out.println(LocalDate.of(1991, Month.NOVEMBER, 11));//相对上面只是把月换成了枚举
LocalDate birDay = LocalDate.of(1991, 11, 11);
System.out.println(LocalDate.ofYearDay(1991, birDay.getDayOfYear()));//第一个参数为年,第二个参数为当年的第多少天
System.out.println(LocalDate.ofEpochDay(birDay.toEpochDay()));//参数为距离1970-01-01的天数
System.out.println(LocalDate.parse("1991-11-11"));
System.out.println(LocalDate.parse("19911111",DateTimeFormatter.ofPattern("yyyyMMdd")));

(2)LocalTime

System.out.println(LocalTime.of(8, 20));//时分
System.out.println(LocalTime.of(8, 20, 30));//时分秒
System.out.println(LocalTime.of(8, 20, 30, 150));//时分秒纳秒
LocalTime mTime = LocalTime.of(8, 20, 30, 150);
System.out.println(LocalTime.ofSecondOfDay(mTime.toSecondOfDay()));//参数为距离当天零时的秒数
System.out.println(LocalTime.ofNanoOfDay(mTime.toNanoOfDay()));//参数为距离当天零时的纳秒数
System.out.println(LocalTime.parse("08:20:30"));
System.out.println(LocalTime.parse("082030", DateTimeFormatter.ofPattern("HHmmss")));

(3)LocalDateTime
这里的 birDay 和 mTime 复用上面的变量。

System.out.println(LocalDateTime.of(birDay, mTime));//参数为LocalDate和LocalTime
System.out.println(LocalDateTime.of(1991, 11, 11, 8, 20));
System.out.println(LocalDateTime.of(1991, Month.NOVEMBER, 11, 8, 20));
System.out.println(LocalDateTime.of(1991, 11, 11, 8, 20, 30));
System.out.println(LocalDateTime.of(1991, Month.NOVEMBER, 11, 8, 20, 30));
System.out.println(LocalDateTime.of(1991, 11, 11, 8, 20, 30, 150));
System.out.println(LocalDateTime.of(1991, Month.NOVEMBER, 11, 8, 20, 30, 150));
System.out.println(LocalDateTime.parse("1991-11-11T08:20:30"));
System.out.println(LocalDateTime.parse("1991-11-11 08:20:30", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章