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

如何构造一个 Timestamp()

原创
作者头像
张紫娃
修改2024-12-26 17:21:32
修改2024-12-26 17:21:32
24800
代码可运行
举报
运行总次数:0
代码可运行

啥是Timestamp?

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

为何引入Timestamp?

1. 数据库交互的标准化

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

2. 增强的时间精度

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

3. 特定数据库功能支持

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


Java里如何构造Timestamp

同级转换:1562501898000→Timestamp → 【默认当前时区时间格式】

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

同级转换:Instant→Timestamp → 【默认当前时区时间格式】

代码语言:javascript
代码运行次数:0
复制
Timestamp.from(Instant.now().atZone(ZoneOffset.UTC));

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  复

Date→Timestamp转换 → 【默认当前时区时间格式】

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

ZonedDateTime→Timestamp转换 → 【时区切换】

代码语言:java
复制
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.from(ZONED_DATE_TIME.toInstant()));           //2019-07-07 19:18:18.000000888                    【当前时区】
Timestamp.valueOf(ZONED_DATE_TIME.toLocalDateTime()));  //2019-07-07 20:18:18.000000888                    【当前时区】

OffsetDateTime→Timestamp转换 → 【时区切换】

代码语言:java
复制
OffsetDateTime OFFSET_DATE_TIME = OffsetDateTime.of(2019, 7, 7, 20, 18, 18, 888, ZoneOffset.ofHours(9));
OFFSET_DATE_TIME);                                       //2019-07-07T20:18:18.000000888+09:00  【当前时区】
OFFSET_DATE_TIME.toLocalDateTime());                     //2019-07-07T20:18:18.000000888        【当前时区】

Timestamp.from(OFFSET_DATE_TIME.toInstant()));           //2019-07-07 19:18:18.000000888        【当前时区】
Timestamp.valueOf(OFFSET_DATE_TIME.toLocalDateTime()));  //2019-07-07 20:18:18.000000888        【当前时区】  

LocalDateTime→Timestamp 【单纯转换格式,没时区转换】

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

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

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

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

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

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