【问题标题】:Convert Date and time with timezone offset into a timestamp using Java [duplicate]使用Java将具有时区偏移的日期和时间转换为时间戳[重复]
【发布时间】:2021-02-16 23:26:00
【问题描述】:

我正在尝试使用 java 将2020-11-03T14:03:45.173649-05:00 转换为时间戳。

我尝试在这里使用Timestamp.valueOf("2020-11-03T14:03:45.173649-05:00");,但出现错误提示java.lang.IllegalArgumentException:Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]。有没有办法将具有时区偏移的日期时间转换为时间戳?

【问题讨论】:

  • 是什么让你觉得你需要一个老式的java.sql.Timestamp?从 JDBC 4.2 开始,您可以将字符串解析为 OffsetDateTime,您可以将其直接传递给 PreparedStatement 和其他 JDBC 类。这个故事比我在这里讲的要长,但基本上你应该使用 java.tiem,现代 Java 日期和时间 API,而不是 Timestamp

标签: java datetime timestamp timezone timezone-offset


【解决方案1】:

由于这是一种 ISO 格式,最简单的方法是先获取OffsetDateTime,然后再转换为Timestamp

var input = "2020-11-03T14:03:45.173649-05:00";
var odt = OffsetDateTime.parse(input);
var ts = Timestamp.from(odt.toInstant());

或者,您可以使用SimpleDateFormat 解析字符串。

【讨论】:

    猜你喜欢
    • 2014-04-11
    • 2020-03-17
    • 2016-10-23
    • 1970-01-01
    • 2018-09-12
    • 2021-03-28
    • 2013-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多