需要帮助制作更好的代码,这个是如此丑陋

时间:2013-09-11 14:06:17

标签: java simpledateformat

我有一个包含以下数据的查询

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

反正是为了让这更好吗?

2 个答案:

答案 0 :(得分: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之外,你的代码中没有真正的问题。

答案 1 :(得分:0)

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

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

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

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