Java将Date转换为其他格式

A Y*_*A Y 0 java date

我有这种格式的日期字符串:

String fieldAsString = "11/26/2011 14:47:31";
Run Code Online (Sandbox Code Playgroud)

我试图以这种格式将其转换为Date类型对象:"yyyy.MM.dd HH:mm:ss"

我尝试使用以下代码:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
Date newFormat = sdf.parse(fieldAsString);
Run Code Online (Sandbox Code Playgroud)

但是,这会引发一个异常,即它是一个Unparsable日期.

所以我尝试过这样的事情:

Date date = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").parse(fieldAsString);
String newFormat = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss").format(date)
Run Code Online (Sandbox Code Playgroud)

但是,这种新格式现在采用'String'格式,但我希望我的函数将新的格式化日期作为'Date'对象类型返回.我该怎么做?

谢谢!

Jon*_*eet 6

您似乎认为Date对象具有格式.它没有.听起来你只需要这个:

Date date = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").parse(fieldAsString);
Run Code Online (Sandbox Code Playgroud)

(请注意,您应该考虑指定区域设置和可能的时区.)

那你就有了自己的Date价值.格式仅在您以后想要将其转换为文本时才相关... 那就是您应该指定格式的时候.将所表示的值(在这种情况下是瞬间)与潜在的文本表示分开是很重要的.它就像整数 - 这两个值之间没有区别:

int x = 0x10;
int y = 16;
Run Code Online (Sandbox Code Playgroud)

它们是相同的值,只是在源代码中表示不同.

另外考虑使用Joda Time进行所有日期/时间工作 - 它比API更清晰java.util.*.