我正在尝试在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
我怎样才能简单地将原始日期转换为正确的格式?
答案 0 :(得分:8)
MM
(一年中的一个月)两次。 “分钟”的m必须是小写的。HH
才能捕获0-23
范围内指定的小时数,而不是hh
期望AM / PM小时(在1-12
范围内的小时,AM / PM说明符作为时间字符串的一部分)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);
答案 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";
MM
和mm
分别用于月份和分钟.....
所以它应该......
"yyyy-MM-dd hh:mm:ss";