字符串到日期格式不正确

时间:2012-09-07 20:03:46

标签: java date

我正在尝试在Java中进行简单的String to Date转换。我正在浏览某些日志的日期,并需要将其转换为日期以进行一些处理。通过的日期将如下所示:

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

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

5 个答案:

答案 0 :(得分:8)

  1. 您已指定MM(一年中的一个月)两次。 “分钟”的m必须是小写的。
  2. 如果您需要24小时制作,则需要指定HH才能捕获0-23范围内指定的小时数,而不是hh期望AM / PM小时(在1-12范围内的小时,AM / PM说明符作为时间字符串的一部分)
  3. 最后,您的示例代码未定义您传递到format对象的构造函数的SimpleDateFormat变量。实际上,您使用变量名称dateFormat两次并且根本没有定义format变量 - 至少不是根据您在问题中包含的代码。
  4. 所以,我相信你的正确格式字符串应该是......

    "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); 
    

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

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

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

String s=formatter.format(taskStartDate)

答案 3 :(得分:0)

尝试将dateFormat定义更改为:

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

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

答案 4 :(得分:0)

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

MMmm分别用于月份和分钟.....

所以它应该......

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