我想更改从服务器获取的时间并使用以下格式保存到数据库中:“ 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);
}
}
答案 0 :(得分: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
您的代码出了什么问题?
您的格式模式字符串中的两个字符错误:
-05:00
,负号是偏移量的一部分(对于UTC正偏移量,它可能是+
)。因此,将其从格式模式中删除。'T'
中正确执行操作时,可以在文字部分周围设置单引号(撇号)。格式模式字符串的结尾不能有不匹配的单引号。只需删除它即可。更多提示
LocalDate
是要在数据库中存储日期和一天中的时间时使用的错误类。 LocalDate
保存的日期中没有一天中的时间。您可能需要OffsetDateTime
。OffsetDateTime
)交给JDBC驱动程序或JPA实现,并让它负责其余的工作。答案 1 :(得分: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"));