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

如何构造一个 Timestamp()

原创
作者头像
张紫娃
修改2024-04-21 17:19:06
1890
修改2024-04-21 17:19:06
举报

为何引入Timestamp?

1、数据库交互的标准化:

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

2、增强的时间精度:

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

3、特定数据库功能支持:

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


啥是Timestamp

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

1、构造方法

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

2、Instant.ofEpoch

代码语言:javascript
复制
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 【当前时区】

3、Instant.parse(存在时区转换)

代码语言:javascript
复制
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                    【当前时区】

4、toInstant(存在时区转换)

代码语言:javascript
复制
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  【当前时区】

5、LocalDateTime

代码语言:javascript
复制
ZonedDateTime ZONED_DATE_TIME = ZonedDateTime.of(2019, 7, 7, 20, 18, 18, 888, ZoneId.of("Asia/Tokyo"));
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                    【当前时区】

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?
    • 1、数据库交互的标准化:
      • 2、增强的时间精度:
        • 3、特定数据库功能支持:
        • 啥是Timestamp?
          • 1、构造方法
            • 2、Instant.ofEpoch
              • 3、Instant.parse(存在时区转换)
                • 4、toInstant(存在时区转换)
                  • 5、LocalDateTime
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档