小白篇:JDK8的日期处理API-必知必备
副标题[/!--empirenews.page--]
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() (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |