无法将日期显示为yyyy-MM-dd';T';HH:mm:ss:SSS-Java

无法将日期显示为yyyy-MM-dd';T';HH:mm:ss:SSS-Java,java,spring,date,datetime,feign,Java,Spring,Date,Datetime,Feign,当我尝试转换以下字符串时,我收到以下错误。我希望日期的格式为yyyy-MM-dd'T'HH:MM:ss:SSS,但日期似乎显示为Sun-Mar 01 23:00:01 GMT 2020 String FULL_ISO_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS"; SimpleDateFormat formatter = new SimpleDateFormat(FULL_ISO_DATE_FORMAT); Date from = f

当我尝试转换以下字符串时,我收到以下错误。我希望日期的格式为
yyyy-MM-dd'T'HH:MM:ss:SSS
,但日期似乎显示为
Sun-Mar 01 23:00:01 GMT 2020

    String FULL_ISO_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS";
    SimpleDateFormat formatter = new SimpleDateFormat(FULL_ISO_DATE_FORMAT);
    Date from = formatter.parse("2020-03-01T23:00:01.000");
错误

任何帮助都将不胜感激。我需要使用Date对象,因为Im查询的构造函数正在使用Date对象。理想情况下,我希望使用LocalDateTime,但我不能。

使用java-8中的,并停止使用遗留的
Date

String FULL_ISO_DATE_FORMAT = DateTimeFormatter. ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS");
LocalDateTime dateTime = LocalDateTime.now();
dateTime.format(FULL_ISO_DATE_FORMAT);

请不要使用旧类
Date
SimpleDateFormat
。使用更健壮、设计更好的新api


您可以执行以下相同的操作:

DateTimeFormatter formatter=DateTimeFormatter.of模式(“yyyy-MM-dd'T'HH:MM:ss.SSS”);
LocalDateTime日期=LocalDateTime.parse(“2020-03-01T23:00:01.000”,格式化程序);
请记住,您可以将其转换为
日期
,以实现如下兼容性:

Date legacyDate=Date.from(Date.atZone(ZoneId.systemDefault()).toInstant());

我必须使用Date对象,构造函数正在使用Date。当我尝试使用LocalDateTime时,它会在类中出现不匹配错误。您可以通过指向精确的problem@KahunaDub我编辑了我的答案,以展示如何将
LocalDateTime
转换为旧的
日期。这样你就有了兼容性。你说当你“试图转换下面的字符串”时出现了错误,但是你没有指定字符串;您只显示解析模式和错误消息。从错误消息判断,我认为您试图解析的字符串实际上是
Sun Mar 01 23:00:01 GMT 2020
,这显然不起作用。在请求处理过程的前面寻找一个步骤,其中使用
toString()
方法将
Date
实例转换为
String
。这可能是某个地方的隐式调用。我建议您不要使用
SimpleDateFormat
Date
。这些类设计得很糟糕,而且早已过时,其中前者尤其令人讨厌。相反,只需使用
LocalDateTime
from。你是在问不可能的问题。
日期
没有格式(如不能有格式)。当您看到
Sun Mar 01 23:00:01 GMT 2020
时,您看到的是打印时隐式调用其
toString
方法的结果。
String FULL_ISO_DATE_FORMAT = DateTimeFormatter. ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS");
LocalDateTime dateTime = LocalDateTime.now();
dateTime.format(FULL_ISO_DATE_FORMAT);