前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何构造一个 Timestamp()

如何构造一个 Timestamp()

原创
作者头像
张紫娃
修改2024-07-31 08:03:00
2180
修改2024-07-31 08:03:00
举报
文章被收录于专栏:张紫娃的学习笔记

啥是Timestamp?

java.sql.Timestamp 类是 Java 中用于精确表示日期和时间的数据类型,特别适用于在与数据库交互时处理时间戳信息。


为何引入Timestamp?

1. 数据库交互的标准化

数据库系统为Java应用程序提供一种与数据库中时间戳字段直接对应的数据类型。

2. 增强的时间精度

早期的 java.util.Date 类仅精确到毫秒级,Timestamp 类扩展到纳秒级。

3. 特定数据库功能支持

例如,它可以携带时区信息。


Java里如何构造Timestamp

构造方法 →【时间戳 的 当前时区时间格式】

代码语言:java
复制
new Timestamp(1562501898000L));                      //2019-07-07 20:18:18.0 【当前时区】

根据Date获取Timestamp

代码语言:java
复制
new Timestamp(new Date(1562501898000L).getTime()));  //2019-07-07 20:18:18.0 【当前时区】

根据Instant获取Timestamp

代码语言:java
复制
Timestamp.from(Instant.ofEpochMilli(1562501898888L)));  //2019-07-07 20:18:18.888       【当前时区】
Timestamp.from(Instant.ofEpochSecond(1562501898)));     //2019-07-07 20:18:18.0         【当前时区】
Timestamp.from(Instant.ofEpochSecond(1562501898,888))); //2019-07-07 20:18:18.000000888 【当前时区】

Timestamp.from(Instant.parse("2019-07-07T20:18:18.000000888Z")));//2019-07-08 04:18:18.000000888  【当前时区】
Timestamp.from(Instant.parse("2019-07-07T20:18:18Z")));//2019-07-08 04:18:18.0  

ZonedDateTime ZONED_DATE_TIME = ZonedDateTime.of(2019, 7, 7, 20, 18, 18, 888, ZoneId.of("Asia/Tokyo"));
OffsetDateTime OFFSET_DATE_TIME = OffsetDateTime.of(2019, 7, 7, 20, 18, 18, 888, ZoneOffset.ofHours(9));
LocalDateTime LOCAL_DATE_TIME = LocalDateTime.of(2019, 7, 7, 20, 18, 18, 888);

Timestamp.from(ZONED_DATE_TIME.toInstant()));                       //2019-07-07 19:18:18.000000888  【当前时区】
Timestamp.from(OFFSET_DATE_TIME.toInstant()));                      //2019-07-07 19:18:18.000000888  【当前时区】
Timestamp.from(LOCAL_DATE_TIME.toInstant(ZoneOffset.ofHours(8))));  //2019-07-07 20:18:18.000000888  【当前时区】
Timestamp.from(LOCAL_DATE_TIME.toInstant(ZoneOffset.UTC)));         //2019-07-08 04:18:18.000000888  【当前时区】  

根据LocalDateTime获取Timestamp 【单纯转换格式,没时区转换】

代码语言:java
复制
LocalDateTime LOCAL_DATE_TIME = LocalDateTime.of(2019, 7, 7, 20, 18, 18, 888);
Timestamp.valueOf(LOCAL_DATE_TIME));                    //2019-07-07 20:18:18.000000888                    【当前时区】

ZonedDateTime ZONED_DATE_TIME = ZonedDateTime.of(2019, 7, 7, 20, 18, 18, 888, ZoneId.of("Asia/Tokyo"));
ZONED_DATE_TIME);                                       //2019-07-07T20:18:18.000000888+09:00[Asia/Tokyo]  【当前时区】
ZONED_DATE_TIME.toLocalDateTime());                     //2019-07-07T20:18:18.000000888                    【当前时区】
Timestamp.valueOf(ZONED_DATE_TIME.toLocalDateTime()));  //2019-07-07 20:18:18.000000888                    【当前时区】

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 啥是Timestamp?
  • 为何引入Timestamp?
    • 1. 数据库交互的标准化
      • 2. 增强的时间精度
        • 3. 特定数据库功能支持
        • Java里如何构造Timestamp?
          • 构造方法 →【时间戳 的 当前时区时间格式】
            • 根据Date获取Timestamp
              • 根据Instant获取Timestamp
                • 根据LocalDateTime获取Timestamp 【单纯转换格式,没时区转换】
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档