如何将2019-03-26T04:31:40-05:00 like string转换成Java中的timestamp?
How to convert 2019-03-26T04:31:40-05:00 like string into timestamp in Java?
我想更改从服务器获取的时间并使用以下格式保存到数据库中 - “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);
}
}
不要定义你自己的格式化程序。使用内置 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
你的代码出了什么问题?
您的格式模式字符串中有两个字符错误:
- 偏移量是
-05:00
,减号是它的一部分(它可能是 +
而不是正 UTC 偏移量)。所以从你的格式模式中删除它。
- 单引号(撇号)可能会围绕文字部分设置,正如您在
'T'
中所做的那样。您不能在格式模式字符串的末尾使用不匹配的单引号。把那个也删掉。
更多提示
LocalDate
当您想将日期 和一天中的时间 存储到数据库中时,使用 class 是错误的。 LocalDate
保存没有时间的日期。你可能想要 OffsetDateTime
.
- 存储到你的数据库时不要关心格式。只需将日期时间对象(例如您的
OffsetDateTime
)交给您的 JDBC 驱动程序或 JPA 实现,让它处理其余的事情。
我不完全理解你的问题,但如果你只想要日期部分,你可以使用 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"));
我想更改从服务器获取的时间并使用以下格式保存到数据库中 - “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);
}
}
不要定义你自己的格式化程序。使用内置 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
你的代码出了什么问题?
您的格式模式字符串中有两个字符错误:
- 偏移量是
-05:00
,减号是它的一部分(它可能是+
而不是正 UTC 偏移量)。所以从你的格式模式中删除它。 - 单引号(撇号)可能会围绕文字部分设置,正如您在
'T'
中所做的那样。您不能在格式模式字符串的末尾使用不匹配的单引号。把那个也删掉。
更多提示
LocalDate
当您想将日期 和一天中的时间 存储到数据库中时,使用 class 是错误的。LocalDate
保存没有时间的日期。你可能想要OffsetDateTime
.- 存储到你的数据库时不要关心格式。只需将日期时间对象(例如您的
OffsetDateTime
)交给您的 JDBC 驱动程序或 JPA 实现,让它处理其余的事情。
我不完全理解你的问题,但如果你只想要日期部分,你可以使用 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"));