0

我有以下数据的查询

85343
125242
65252
125655
185658
235758

这些是没有格式的 24 小时时间。我尝试用它解析它,HHmmss然后给它一个格式hh:mm:ss,它在 12+ 小时内工作,但在 12- 小时内,它给出了错误的时间。我用以下代码解决了这个问题:

DateFormat dateFormat2 = new SimpleDateFormat("Hmmss");
DateFormat dateFormat21 = new SimpleDateFormat("HHmmss");
DateFormat dateFormat5 = new SimpleDateFormat("hh:mm:ss a");

System.out.println((Query.getString(1).length() == 5) ? 
        dateFormat5.format(dateFormat2.parse(Query.getString(1))) 
        : dateFormat5.format(dateFormat21.parse(Query.getString(1))));

当我得到正确的时间时,它解决了时间错误的问题

8:53:43AM 
12:52:42PM 
6:52:52 AM 
12:56:55 PM 
6:56:58 PM 
11:57:58PM

有没有办法让这变得更好?

4

2 回答 2

0

尝试使用一些像这样的正则表达式:

(\d?\d)(\d\d)(\d\d)

第 1 组是小时,第 2 组是分钟,第 3 组是秒。

有关 Java 中的正则表达式的更多信息,请参见此处: http ://www.regular-expressions.info/java.html

于 2013-09-11T14:23:58.807 回答
0

我不会使用两种不同DateFormat的解析,但只有一种:

DateFormat dateFormat21 = new SimpleDateFormat("HHmmss");
DateFormat dateFormat5 = new SimpleDateFormat("hh:mm:ss a");
String s = Query.getString(1);
if (s.length()==5) s = "0"+s;
System.out.println(dateFormat5.format(dateFormat21.parse(s)));

getString但是除了不必要的调用之外,您的代码没有真正的问题。

于 2013-09-11T14:09:41.410 回答