Java 常用类总结(SE基础) (3)

demo如下:

Calendar calendar = Calendar.getInstance(); //get int i = calendar.get(Calendar.DAY_OF_MONTH); System.out.println(i);//获取这个月的第几天,本实例为26,当前时间4/26 System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//类似上一个 //set calendar.set(Calendar.DAY_OF_MONTH,12); int j = calendar.get(Calendar.DAY_OF_MONTH); //12,改变了 System.out.println(j); //add calendar.add(Calendar.DAY_OF_MONTH,3); j = calendar.get(Calendar.DAY_OF_MONTH); //15,还是改变,增加3天 System.out.println(j); //getTime Date date = calendar.getTime(); //Thu Apr 15 03:10:28 CST 2021,返回时间戳 System.out.println(date); //setTime:Date --> Calendar calendar.setTime(date);//直接操作当前对象 int days = calendar.get(Calendar.DAY_OF_MONTH); //15 System.out.println(days);

获取月份时,一月是0;获取星期几时,周日是1

2.2 JDK8中的日期时间

因为之前的类具有4个问题:

可变性:例如Calendar的set,它们都是可变的

偏移性:Date中的年份都是从1900开始,月份从0开始,如果调用有参构造,会发生偏移。

格式化:格式化只对Date有用,对于Calendar则不行

线程不安全

java8中的java.time API已经纠正了过去的缺陷。

时间日期的相关packge:

LocalDate, LocalTime, LocalDateTime是其中比较重要的几个类,他们的实例均为不可变实例,使用ISO-8601日历系统。

ISO-8601日历系统是国际标准话组织制定的现代公民的日期和时间的表示法(公历)

相关方法:

上面四个层次其实就是构造、get、set、加减操作。和Calendar类似。

localDate是一个final类,有构造方法,类似String, Math,举例当前时间生成:

LocalDate localDate = LocalDate.now(); //2021-04-27 LocalTime localTime = LocalTime.now(); //19:24:37.171676500 LocalDateTime localDateTime = LocalDateTime.now(); //2021-04-27T19:24:37.171676500

举例设置指定时间:

LocalDateTime localDateTime1 = LocalDateTime.of(2020,10,6,13,12,13);//2020-10-06T13:12:13

举例相关get操作:

Java 常用类总结(SE基础)

System.out.println(localDateTime.getMonth()); //APRIL System.out.println(localDateTime.getMonthValue()); //4

这里的月份是从1开始的。

.with操作(设置相关属性):

LocalDate localDate1 = localDate.withDayOfMonth(22); //2021-04-22 System.out.println(localDate); //2021-04-27 System.out.println(localDate1);

locatDate实例本身并没有发生变化(不可变性)。

加减操作:

Java 常用类总结(SE基础)

LocalDate localDate2 = localDate.plusDays(4); //localDate为4-27 System.out.println(localDate2);//2021-05-01 //减的话即将Plus换位minus 2.3 Instant(瞬时)

时间线上的一个瞬时点,可能用来记录应用程序中的事件时间戳。

同样是起始于1970年1月1日00:00:00的一个时间戳(纳秒级)。

相关方法:

Java 常用类总结(SE基础)

时间标准主要有:UTC, GMT, CST,UTC时间与伦敦本地时间相同,与北京相差8个小时(早了8个小时)

Instant instant = Instant.now(); System.out.println(instant); //2021-04-27T11:45:00.321544Z,实际时间19:45,相差8个小时

偏移应用:

OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8)); System.out.println(offsetDateTime); //2021-04-27T19:48:17.448368100+08:00

返回时间戳(毫秒数):

System.out.println(instant.toEpochMilli());//1619524168468

设置特定时间,和Date类似:

Instant instant1 = Instant.ofEpochMilli(1619524168468L); //2021-04-27T11:49:28.468Z,这里的时间就是毫秒级的了 System.out.println(instant1); 2.4 DateTimeFormatter

Java 常用类总结(SE基础)

三种预定义的标准格式:

Java 常用类总结(SE基础)

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; //格式化:日期-->字符串 LocalDateTime localDateTime = LocalDateTime.now(); String str = dateTimeFormatter.format(localDateTime); //将当前时间格式化 System.out.println(str); //2021-04-27T19:59:19.0153049 //解析:字符串-->日期 TemporalAccessor temporalAccessor = dateTimeFormatter.parse("2021-04-27T19:59:19.0153049"); System.out.println(temporalAccessor);//{},ISO resolved to 2021-04-27T19:59:19.015304900

本地化相关的格式:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwxsj.html