我有这种格式的日期字符串:
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'对象类型返回.我该怎么做?
谢谢!
您似乎认为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.*
.