如何将2019-03-26T04:31:40-05:00转换为Java中的时间戳?

问题描述 投票:2回答:2

我想改变从服务器获取的时间并使用以下格式保存到数据库中 - “25-MAR-19 01.23.42.121000000 AM”

我怎么能用Java做到这一点?

尝试下面的代码没有帮助

import java.sql.Date;
import java.time;
public class MyClass {
    public static void main(String args[]) {
        final String selectedStart = "2019-03-26T04:31:40-05:00";
        final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss-XXX'");
        final LocalDate parsedDate = LocalDate.parse(selectedStart, formatter);
    }
}
java date date-format java-time
2个回答
3
投票

我不完全理解你的问题,但如果你只想要日期部分,你可以使用Ole.V.V回答或者使用:

LocalDate d = LocalDate.parse(selectedStart.split("T")[0]);

编辑

OffsetDateTime odt = OffsetDateTime.parse(selectedStart);
String str = odt.format(DateTimeFormatter.ofPattern("dd-MMM-uuuu hh.mm.ss.SSSSS a"));

3
投票

不要定义自己的格式化程序。使用内置的DateTimeFormatter.ISO_OFFSET_DATE_TIME

    final String selectedStart = "2019-03-26T04:31:40-05:00";
    final LocalDate parsedDate = LocalDate.parse(selectedStart, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
    System.out.println(parsedDate);

2019-03-26

您的代码出了什么问题?

格式模式字符串中的两个字符是错误的:

  1. 偏移量是-05:00,减号是它的一部分(它可能是+而不是正的UTC偏移量)。所以从格式模式中删除它。
  2. 单引号(撇号)可以在文字部分周围设置,因为你在'T'中正确地做了。您不能在格式模式字符串的末尾添加不匹配的单引号。也删除它。

进一步提示

  • 当您想要将日期和时间存储到数据库中时,LocalDate是一个错误的类。 LocalDate持有一个没有时间的日期。你可能想要OffsetDateTime
  • 存储到数据库中时不关心格式。只需将日期时间对象(例如您的OffsetDateTime)传递给JDBC驱动程序或JPA实现,然后让它处理其余部分。
© www.soinside.com 2019 - 2024. All rights reserved.