java中instant_Instant

java中instant_Instant我们已经讲过 计算机存储的当前时间 本质上只是一个不断递增的整数 Java 提供的 System currentTimeM 返回的就是以毫秒表示的当前时间戳 这个当前时间戳在 java time 中以 Instant 类型表示 我们用 Instant now 获取当前时间戳 效果和 System currentTimeM 类似 importjava time public

我们已经讲过,计算机存储的当前时间,本质上只是一个不断递增的整数。Java提供的System.currentTimeMillis()返回的就是以毫秒表示的当前时间戳。

这个当前时间戳在java.time中以Instant类型表示,我们用Instant.now()获取当前时间戳,效果和System.currentTimeMillis()类似:

import java.time.*;

—-

public class Main {

public static void main(String[] args) {

Instant now = Instant.now();

System.out.println(now.getEpochSecond()); // 秒

System.out.println(now.toEpochMilli()); // 毫秒

}

}

打印的结果类似:

16

实际上,Instant内部只有两个核心字段:

public final class Instant implements … {

private final long seconds;

private final int nanos;

}

一个是以秒为单位的时间戳,一个是更精确的纳秒精度。它和System.currentTimeMillis()返回的long相比,只是多了更高精度的纳秒。

既然Instant就是时间戳,那么,给它附加上一个时区,就可以创建出ZonedDateTime:

// 以指定时间戳创建Instant:

Instant ins = Instant.ofEpochSecond();

ZonedDateTime zdt = ins.atZone(ZoneId.systemDefault());

System.out.println(zdt); // 2019-09-16T01:32:40+08:00[Asia/Shanghai]

可见,对于某一个时间戳,给它关联上指定的ZoneId,就得到了ZonedDateTime,继而可以获得了对应时区的LocalDateTime。

所以,LocalDateTime,ZoneId,Instant,ZonedDateTime和long都可以互相转换:

┌─────────────┐

│LocalDateTime│────┐

└─────────────┘ │ ┌─────────────┐

├───>│ZonedDateTime│

┌─────────────┐ │ └─────────────┘

│ ZoneId │────┘ ▲

└─────────────┘ ┌─────────┴─────────┐

│ │

▼ ▼

┌─────────────┐ ┌─────────────┐

│ Instant ││ long │

└─────────────┘ └─────────────┘

转换的时候,只需要留意long类型以毫秒还是秒为单位即可。

小结

Instant表示高精度时间戳,它可以和ZonedDateTime以及long互相转换。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203231.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午10:18
下一篇 2026年3月19日 下午10:18


相关推荐

  • linux 安装mysql8.0 超详细图文教程

    linux 安装mysql8.0 超详细图文教程1 在 use local 下创建 mysql 文件夹 mkdirmysql2 切换到 mysql 文件夹下 cdmysql3 下载 mysqlwgethtt dev mysql com get Downloads MySQL 8 0 mysql 8 0 20 linux glibc2 12 x86 64 tar xz 也可以直接在官方下载最新版本 https dev mysql com downloads mysql 选择 linux4 解压 mysqltar zx

    2026年3月17日
    2
  • 2021Eclipse安装教程

    2021Eclipse安装教程第一步下载:官网地址:https://www.eclipse.org/downloads/第二步:下载好后,双击安装包,运行第三步:选择版本运行后有很多版本可供选择EclipseIDEforJavaDevelopers是为java开发的EclipseIDEforJavaEEDevelopers是为J2EE开发的EclipseforRCP/Plug-inDevelopers是为RCP和插件开发的EclipseIDEforC/C++Developers

    2022年5月10日
    86
  • 千问 文心 元宝 Kimi怎么分享整个对话

    千问 文心 元宝 Kimi怎么分享整个对话

    2026年3月12日
    2
  • IOS版的MT4软件如何下载安装「建议收藏」

    IOS版的MT4软件如何下载安装「建议收藏」T4的版本总体来说还是比较全。包含了电脑版、安卓版/ios版,以及mac版。那么今天来重点讲解一下IOS版本的mt4如何下载。下载方式主要分以下2种:(1)在网页上获取安装包,通常mt4。yhtz。cc涵盖了多个版本的安装包,选择你需要的IOS即可下载到手机上后,然后就进入安装流程,点击下一步,下一步,总体来说,就是跟着安装提示走即可。(2)IOS属于手机版,IOS是可以在苹果应用商店下载的。下载流程就是:搜索Mt4,然后点击下载,一般会自动安装哦,就跟下载其他的客户端是一样的。下载安装好后

    2022年8月15日
    5
  • 视觉slam简介

    视觉slam简介1 什么是 SLAMSLAM 是 simultaneous 的缩写 同时定位与构建地图 它指搭载特定传感器的主体 在没有环境先验信息的情况下 于运动过程中建立环境的模型 同时估计自己的运动 slam 的目的就是解决定位与地图构建这两个问题 一边要估计传感器自身的位置 一边要建立周围环境的模型 举个例子 eg 机器人或者无人车 来到一个小区 它不知道小区

    2026年3月18日
    2
  • 同事问你工资多少,不要直接回答,聪明人会用这3个技巧

    同事问你工资多少,不要直接回答,聪明人会用这3个技巧

    2022年2月13日
    65

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号