Java 为什么不是’;t DateTimeFormatter格式化我的字符串?

Java 为什么不是’;t DateTimeFormatter格式化我的字符串?,java,datetime,datetime-format,localdate,java-time,Java,Datetime,Datetime Format,Localdate,Java Time,我有一个简单的日期字符串headerValues[5]=“24.11.1946”。我只想把它转换,解析成一个日期对象。 所以我用 DateTimeFormatter formatter = ofPattern(("dd.MM.yyyy"); headerLine.setStartDate(LocalDate.parse(headerValues[5],datePattern)); 输出是2012-04-25不是我想要的24.11.1946 为什么 编辑 我试过这个 DateTimeFo

我有一个简单的日期字符串
headerValues[5]=“24.11.1946”
。我只想把它转换,解析成一个日期对象。 所以我用

  DateTimeFormatter formatter = ofPattern(("dd.MM.yyyy");
  headerLine.setStartDate(LocalDate.parse(headerValues[5],datePattern));
输出是
2012-04-25
不是我想要的
24.11.1946

为什么

编辑 我试过这个

DateTimeFormatter datePattern=DateTimeFormatter.of模式(“dd.MM.yyyy”,Locale.GERMANY);
字符串日期=“24.11.1946”;
System.out.println(“Date=“+LocalDate.parse(Date,datePattern));
输出是

日期=1946-11-24


这部分代码

LocalDate.parse(date,datePattern)
System.out.println("Date = "+ LocalDate.parse(date,datePattern));
创建一个
LocalDate
实例

因此在这行代码中

LocalDate.parse(date,datePattern)
System.out.println("Date = "+ LocalDate.parse(date,datePattern));
实际上,您正在调用类
LocalDate
的方法
toString()

从该方法的javadoc

输出将采用ISO-8601格式
uu-MM-dd

你不想要那种格式。您需要
datePattern
对象的格式。因此,您应该更改发布到的代码的最后一行

System.out.println(datePattern.format(LocalDate.parse(date,datePattern)));

换句话说,相同的
DateTimeFormatter
对象既可用于将
字符串
解析为日期,也可用于将日期格式化为
字符串
这部分代码

LocalDate.parse(date,datePattern)
System.out.println("Date = "+ LocalDate.parse(date,datePattern));
创建一个
LocalDate
实例

因此在这行代码中

LocalDate.parse(date,datePattern)
System.out.println("Date = "+ LocalDate.parse(date,datePattern));
实际上,您正在调用类
LocalDate
的方法
toString()

从该方法的javadoc

输出将采用ISO-8601格式
uu-MM-dd

你不想要那种格式。您需要
datePattern
对象的格式。因此,您应该更改发布到的代码的最后一行

System.out.println(datePattern.format(LocalDate.parse(date,datePattern)));

换句话说,相同的
DateTimeFormatter
对象既可以用于将
字符串
解析为日期,也可以用于将日期格式化为
字符串

您发布的代码的第二行不应该是:
headerLine.setStartDate(LocalDate.parse(headerValues[5],formatter))?您发布的代码的第一行不应该是:
DateTimeFormatter formatter=DateTimeFormatter.ofPattern(“dd.MM.yyyy”)?是的,输入错误仍然不起作用,输出仍然相同。我建议你发表一篇文章。你应该回答你的问题并添加你的最后评论。没关系,我是为你做的。那么,您得到的输出有什么问题吗?您发布的代码的第二行不应该是:
headerLine.setStartDate(LocalDate.parse(headerValues[5],formatter))?您发布的代码的第一行不应该是:
DateTimeFormatter formatter=DateTimeFormatter.ofPattern(“dd.MM.yyyy”)?是的,输入错误仍然不起作用,输出仍然相同。我建议你发表一篇文章。你应该回答你的问题并添加你的最后评论。没关系,我是为你做的。那么,您得到的输出有什么问题吗?您好,我发现DateTimeFormatter.format方法返回一个字符串,我需要一个LocalDate对象???有没有办法生成一个24.11.1946对象并将其保存为原样而不格式化字符串?此代码-
LocalDate.parse(日期,日期模式)
-返回一个
LocalDate
对象。这就是你想要的吗?你只是想要一个
LocalDate
对象吗?
Date
本身很少(如果有的话)存储某个时刻的实际字符串或格式-它通常存储一个与某个历元相距较远的长字符串或格式。您需要使用该格式化程序在所需的字符串表示形式和表示它的实际
Date
对象之间进行转换;如果你想简化这个过程,然后制作一些包装日期对象的东西,并提供functionallity@Rogue我想你需要向OP解释这一点,而不是向我解释:-)嗨,我发现DateTimeFormatter.format方法返回一个字符串,我需要一个LocalDate对象???有没有办法创建一个24.11.1946对象并将其保存为无格式的原样字符串?此代码-
LocalDate.parse(date,datePattern)
-返回一个
LocalDate
对象。这就是你想要的吗?你只是想要一个
LocalDate
对象吗?
Date
本身很少(如果有的话)存储某个时刻的实际字符串或格式-它通常存储一个与某个历元相距较远的长字符串或格式。您需要使用该格式化程序在所需的字符串表示形式和表示它的实际
Date
对象之间进行转换;如果你想简化这一点,那么做一些东西来包装你的日期对象并提供它functionallity@Rogue我认为你需要向OP解释,而不是向我解释:)