Instant Class : An instantaneous point on the time-line.

Instant对象表示的就是在时间线上的一点。

Instant对象和时间戳是一一对应的。

这个类能干什呢?

1,处理和时间戳相关的

2,但是不处理 年月日这种单位

作用1 获得当前时间的毫秒的时间戳

Instant timestamp = Instant.now();

long ts = timestamp.toEpochMilli();

既然Instant类是处理时间戳的,肯定可以用ts构造一个Instant对象

ts 转为 Instant对象

long ts2 = 1584700633000L;

Instant instant = Instant.ofEpochMilli(ts2);

LocalDateTime ldt3 = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());

System.out.println(ldt3);

Instant类还提供了一些常量,如

EPOCH 是一个常量,也就是 时间戳为0的时刻。代表纪元的开始, 以后的时间戳是正数,之前的时间戳是负数。

MIN:Instant能表示的最早的时间

MAX:Instant能表示的最晚的时间

// 时间移动计算,加1小时, 减5天等

// 一小时以后

Instant timestamp = Instant.now();

Instant oneHourLater = timestamp.plus(1, ChronoUnit.HOURS);

LocalDateTime ldt = LocalDateTime.ofInstant(oneHourLater, ZoneId.systemDefault());

System.out.printf("%s %d %d at %d:%d%n", ldt.getMonth(), ldt.getDayOfMonth(),

ldt.getYear(), ldt.getHour(), ldt.getMinute());

// 两天前

Instant timestamp = Instant.now();

Instant twoDaysAgo = timestamp.minus(2, ChronoUnit.DAYS);

LocalDateTime ldt2 = LocalDateTime.ofInstant(twoDaysAgo, ZoneId.systemDefault());

System.out.printf("%s %d %d at %d:%d%n", ldt2.getMonth(), ldt2.getDayOfMonth(),

ldt2.getYear(), ldt2.getHour(), ldt2.getMinute());

因为Instant类是不处理 年月日这种人类的时间单位,如果要处理,需要把 Instant对象转换为 LocalDateTime 或者 ZonedDateTime 这时需要和一个时区绑定。

Instant timestamp;

LocalDateTime ldt = LocalDateTime.ofInstant(timestamp, ZoneId.systemDefault());

System.out.printf("%s %d %d at %d:%d%n", ldt.getMonth(), ldt.getDayOfMonth(),

ldt.getYear(), ldt.getHour(), ldt.getMinute());

代码:

package com.example.demo;

import static java.time.Instant.EPOCH;

import static java.time.Instant.MAX;

import static java.time.Instant.MIN;

import java.time.Instant;

import java.time.LocalDateTime;

import java.time.ZoneId;

import java.time.ZonedDateTime;

import java.time.temporal.ChronoUnit;

public class InstantT {

public static void main(String[] args) {

// 获取当前时间戳 Instant timestamp = Instant.now();

long ts = timestamp.toEpochMilli();

// ts 转为 Instant对象 long ts2 = 1584700633000L;

Instant instant = Instant.ofEpochMilli(ts2);

// instant 可以转化为LocalDateTime 表示当地的时间 LocalDateTime ldt3 = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());

System.out.println(ldt3);

// LocalDateTime 可以进一步转化为ZonedDateTime,加上了时区的信息 ZonedDateTime zonedDateTime = ZonedDateTime.of(ldt3, ZoneId.systemDefault());

// ZonedDateTime 又可以转换从Instant Instant l = zonedDateTime.toInstant();

System.out.println(l);

boolean equals = instant.equals(l);

System.out.println(equals);

Instant epoch = EPOCH;

System.out.println(epoch);

System.out.println(MIN); //-1000000000-01-01T00:00:00Z System.out.println(MAX); //+1000000000-12-31T23:59:59.999999999Z

// 一小时以后 Instant oneHourLater = timestamp.plus(1, ChronoUnit.HOURS);

LocalDateTime ldt = LocalDateTime.ofInstant(oneHourLater, ZoneId.systemDefault());

System.out.printf("%s %d %d at %d:%d%n", ldt.getMonth(), ldt.getDayOfMonth(),

ldt.getYear(), ldt.getHour(), ldt.getMinute());

// 两天前 Instant twoDaysAgo = timestamp.minus(2, ChronoUnit.DAYS);

LocalDateTime ldt2 = LocalDateTime.ofInstant(twoDaysAgo, ZoneId.systemDefault());

System.out.printf("%s %d %d at %d:%d%n", ldt2.getMonth(), ldt2.getDayOfMonth(),

ldt2.getYear(), ldt2.getHour(), ldt2.getMinute());

}

}

java instant_Java Instant类相关推荐

  1. Java基础-Date类常用方法介绍

    Java基础-Date类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.毫秒值概念 我们在查阅Date类的API文档时,会发现这样的一句话:"The cl ...

  2. Java反射 Class类

    Class类的实例表示正在运行的Java应用程序中的类和接口.它是Java反射的基础,对任何一个类,首先产生一个Class对象,然后才通过class类获得其他的信息. 获取class类对象方式: 通过 ...

  3. JDK8 Instant类的使用和LocalDate,LocalTime 和 LocalDateTime的介绍。

    简介 在Java 8中又为我们提供了新的日期类.它可以帮我们更精确的保存记录时间. 本文章主要介绍的就是Instant,LocalDate,LocalTime 和 LocalDateTime 这几个类 ...

  4. java基础——常用类

    包装类 分类 类结构 说明: ​ 实现了Serallizable接口说明此类可以串行化,实现网络传输 ​ 实现了Compareable接口说明此类实例可以相互比较大小 包装类和基本数据类型的相互转换 ...

  5. Instant类使用

    import java.time.Instant; import java.time.OffsetDateTime; import java.time.ZoneOffset;public class ...

  6. 【六】ElasticSearch8.x Java API 实体类、工具类、测试类及常见问题

    ES 8.x 新版本中,Type 概念被弃用,所以新版 JavaAPI 也相应做出了改变,使用更加简便.ES 官方从 7.15 起开始建议使用新的 JavaAPI 1.依赖 <!-- elast ...

  7. Java日期时间类及计算

    1. Java中与日期相关的类 1.1 java.util包 类名 具体描述 Date Date对象算是JAVA中历史比较悠久的用于处理日期.时间相关的类了,但是随着版本的迭代演进,其中的众多方法都已 ...

  8. Type definition error: [simple type, class java.time.Instant]; nested exception is com.fasterxml.jac

    postman调用接口报错 "type": "https://www.jhipster.tech/problem/problem-with-message", ...

  9. Dete类,Calendar类,Clock类,Instant类,Localtime类,Duration类,LocalDate类,Period类的特性(1)

    一.各类的优缺点 1. Date类 优点:简单易用,可以进行基本的日期和时间计算. 缺点:已经过时,精度只能到毫秒级别,不支持时区设置. 2. Calendar类 优点:可以进行日期和时间的计算,支持 ...

  10. java until_Java Instant until()用法及代码示例

    Instant类的until()方法,用于使用TemporalUnit计算两个Instant对象之间的时间.起点和终点是这个点,指定的瞬间作为参数传递.如果结束在开始之前,结果将为负.计算返回一个整数 ...

最新文章

  1. (Python)numpy的argmax用法
  2. 【 C 】预处理指令
  3. ODBC连接到400
  4. java list 遍历 删除元素_java中List遍历删除元素相关做法和注意事项
  5. OpenCV3 Java 机器学习使用方法汇总
  6. go标准库的学习-encoding/xml
  7. react使用link跳转传递参数_React-Typescript之路由跳转(使用this.props.history.push)
  8. 检查mysql的replication_MySQL Replication需要注意的问题
  9. linux服务器cc防御,Linux下简单的防止CC攻击
  10. 最新php常用函数200个,180多个PHP常用函数总结
  11. CSS 文字垂直居中自适应 - 代码篇
  12. php curl 发送post请求带参数
  13. 内核并发控制---原子操作(来自网易)
  14. canoco5主成分分析步骤_主成分分析(PCA)统计与MATLAB函数实现
  15. 揭秘:名震天下的震网病毒(Stuxnet)是如何被发现的?
  16. unix下的softlink和hardlink
  17. NOIP2018:The First Step
  18. REASON: Ambari Server java process has stopped. Please check the logs for more information.
  19. 014_SSS_High-Resolution Image Synthesis with Latent Diffusion Models
  20. 带头像的用户显示功能

热门文章

  1. 分布式Restful SpringBoot骨架搭建
  2. 吐血整理的大数据学习资源大全
  3. NoteExpress免费版只7个引文样式#NoteExpress免费版新增引文样式
  4. 英语学习/词典App分析-团队作业(五)
  5. VS编程俄罗斯方块游戏
  6. 通过Python计算经纬度点任意角度任意距离的经纬度点
  7. [转] 英语不规则动词表
  8. 5G基站耗电剑指4G基站水平,通过IMT-2020(5G)大会看5G发展趋势
  9. tplink 文件服务器,tplink云服务器
  10. PHP7.2手册(最新版)