2

我正在尝试在 Java 中进行简单的字符串到日期转换。我正在从一些日志中浏览日期,需要将其转换为日期以进行一些处理。通过的日期将如下所示:

2012-09-07 19:53:33

在我的代码中,当我尝试将其转换为 Date 对象时,我得到一个完全不同的日期。我的代码如下所示:

String taskStart = "2012-09-07 19:53:33";  
String dateFormat = "yyyy-MM-dd hh:MM:ss";
SimpleDateFormat dateFormat=new SimpleDateFormat(format);
Date taskStartDate = dateFormat.parse(taskStart); 

我得到的输出是这样的:

Sat May 07 19:00:27 PDT 2016

我怎样才能简单地将我的原始日期转换为正确的格式?

4

5 回答 5

8
  1. 您已指定MM(一年中的月份)两次。“分钟”的 m 必须小写。
  2. 如果您采用基于 24 小时的时间,则需要指定以HH捕获在时间字符串的一部分)0-23hh1-12
  3. 最后,您的示例代码没有定义format您传递给SimpleDateFormat对象的构造函数的变量。事实上,您使用了dateFormat两次变量名,根本没有定义format变量 - 至少不是根据您在问题中包含的代码。

所以,我相信你正确的格式字符串应该是......

"yyyy-MM-dd HH:mm:ss"

...完整,正确的代码示例将是:

String taskStart = "2012-09-07 19:53:33";  
String format = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat dateFormat=new SimpleDateFormat(format);
Date taskStartDate = dateFormat.parse(taskStart); 
于 2012-09-07T20:07:34.897 回答
3

根据SimpleDateFormat的文档,您应该使用大写的“H”来表示 0-23 格式的小时。此外,分钟用小写的“m”表示。

String dateFormat = "yyyy-MM-dd HH:mm:ss";
于 2012-09-07T20:06:03.200 回答
2

我认为您应该使用日期函数再次将日期输出转换为String格式:formatter.format

Date formatter=new SimpleDateFormatter("yy-MM-dd HH mm ss")

String s=formatter.format(taskStartDate)
于 2012-10-20T11:28:25.617 回答
0

尝试将您的 dateFormat 定义更改为:

String dateFormat = "yyyy-MM-dd HH:mm:ss"; 

请注意,在您的时间里,0-23 的 HH 应该大写,分钟的 mm 应该小写。

于 2012-09-07T20:09:44.567 回答
0

"yyyy-MM-dd hh:MM:ss";

MMmm分别代表月份和分钟......

所以应该是...

"yyyy-MM-dd hh:mm:ss";

于 2012-09-07T20:10:16.877 回答