设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

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

发布时间:2021-06-01 10:34 所属栏目:51 来源:互联网
导读:Instant Instant是用来操作时间戳的,带时区,默认UTC的格林威治时区。因此其他时间类和Instant互转时,需要指定自己的时区 public static Instantnow() public

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() 

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读