站长网 语言 小白篇:JDK8的日期处理API-必知必备

小白篇:JDK8的日期处理API-必知必备

副标题#e# publicstaticInstantnow() publicstaticInstantnow(Clockclock) //根据毫秒生成Instant publicstaticInstantofEpochMilli(longepochMilli) //根据秒生成Instant,外附加纳秒单位的数值 publicstaticInstantofEpochSecond(longepochSecond,longnan

副标题#e#

public static Instant now() 

public static Instant now(Clock clock) 

//根据毫秒生成Instant 

public static Instant ofEpochMilli(long epochMilli) 

//根据秒生成Instant,外附加纳秒单位的数值 

public static Instant ofEpochSecond(long epochSecond, long nanoAdjustment) 

//text的格式:2021-01-04T06:37:53.743Z 

public static Instant parse(CharSequence text)  

//计算与Temporal相隔的时间差,以TemporalUnit为单位度量 

public long until(Temporal endExclusive, TemporalUnit unit)  

时间戳的创建

Instant instant = Instant.now(); 

System.out.println(instant); 

instant = Instant.now(Clock.systemDefaultZone()); 

System.out.println(instant); 

//和Date的相互转换 

instant = Instant.ofEpochMilli(new Date().getTime()); 

System.out.println(instant); 

//根据字符串生成时间,支持到纳秒级别 

instant = Instant.parse("1995-10-23T10:12:35.999999999Z"); 

System.out.println(instant); 

//根据秒和偏差的纳秒 创建时间戳 

Instant preInstant = Instant.ofEpochSecond(1609741558,1); 

//过去时间和当前时间的相差值,可以指定单位TemporalUnit 

System.out.println(preInstant.until(Instant.now(), ChronoUnit.MINUTES)); 

—————输出结果———————— 

2021-01-04T06:37:53.743Z 

2021-01-04T06:37:53.795Z 

2021-01-04T06:37:53.795Z 

1995-10-23T10:12:35.999999999Z 

2021-01-04T06:25:58.000000001Z 

2021-01-04T06:37:53.798Z 

11 

Instant的使用

Instant instant = Instant.now(); 

//设置时区为America/El_Salvador(美国) 

ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("America/El_Salvador")); 

System.out.println(zonedDateTime); 

//设置时区为偏移-6的时区(美国) 

OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(-6)); 

System.out.println(offsetDateTime); 

//天数加2,分钟数减1。月数设定为12月 

Instant fixInstant = instant.minus(1, ChronoUnit.MINUTES) 

        .plus(2, ChronoUnit.DAYS); 

System.out.println(instant); 

System.out.println(fixInstant); 

—————输出结果—————– 

2021-01-04T00:53:01.895-06:00[America/El_Salvador] 

2021-01-04T00:53:01.895-06:00 

2021-01-04T06:53:01.895Z 

2021-01-06T06:52:01.895Z 

LocalTime

LocalTime是用来操作时分秒的类,外加精确到纳秒级别;无时区概念,转Instant需要先设置时区

LocalTime的构造方法

public static LocalTime now()  

public static LocalTime of(int hour, int minute, int second, int nanoOfSecond) 

//距离凌晨的秒数 

public static LocalTime ofSecondOfDay(long secondOfDay) 

//距离凌晨的纳秒数 

public static LocalTime ofNanoOfDay(long nanoOfDay) 

public static LocalTime parse(CharSequence text, DateTimeFormatter formatter)  

//jdk9 

public static LocalTime ofInstant(Instant instant, ZoneId zone) 

LocalTime与其他时间类的转换

public LocalDateTime atDate(LocalDate date) 

public OffsetTime atOffset(ZoneOffset offset)  

public long toEpochSecond(LocalDate date, ZoneOffset offset) 

LocalTime创建示例

//  1的单位是纳秒 

LocalTime localTime = LocalTime.of(12, 12, 12, 1); 

System.out.println(localTime); 

localTime = LocalTime.ofSecondOfDay(60 * 60 * 12 + 60 * 12); 

System.out.println(localTime); 

localTime = LocalTime.parse("12:12:12", DateTimeFormatter.ISO_TIME); 

System.out.println(localTime); 

—————输出结果—————– 

12:12:12.000000001 

12:12 

12:12:12 

LocalTime的常用处理方法

LocalTime localTime = LocalTime.of(12, 12, 12, 1); 

System.out.println(localTime); 

//拼接日期,生成日期时间 

LocalDateTime dateTime = localTime.atDate(LocalDate.now()); 

System.out.println(dateTime); 

//设定时区,时间量不变 

OffsetTime offsetTime = LocalTime.now().atOffset(ZoneOffset.ofHours(-6)); 

System.out.println(offsetTime); 

//当前时间加日期,并设置时区为offset 

long seconds = LocalTime.now().toEpochSecond(LocalDate.now(), ZoneOffset.ofHours(-6)); 

System.out.println(seconds); 

—————输出结果—————– 

12:12:12.000000001 

2021-01-04T12:12:12.000000001 

16:29:33.917387700-06:00 

1609799373 

LocalDate

LocalDate是用来操作年月日的类;表示的时间单位是截止到日,不包括小时及后面的单位

public static LocalDate now() 

#p#副标题#e#

public static LocalDate of(int year, int month, int dayOfMonth) 

public static LocalDate ofInstant(Instant instant, ZoneId zone) 

//当天是当月的第几天 

public int getDayOfMonth() 

//当天是当年的第几天 

public int getDayOfYear() 

//当天是当周的第几天(1~7) 

public DayOfWeek getDayOfWeek()  

//是否闰年 

public boolean isLeapYear()  

public LocalDateTime atTime(LocalTime time) 

//设置时间为今天的凌晨 

public LocalDateTime atStartOfDay() 

//以下两个方法是jdk9,获取当前时间到endExclusive的每一个日期 

public Stream<LocalDate> datesUntil(LocalDate endExclusive) 

public Stream<LocalDate> datesUntil(LocalDate endExclusive, Period step)  

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/biancheng/yuyan/2021/0601/8092.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部