在中午12:00的时间转换

时间:2016-08-09 10:05:46

标签: java

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ConvertDatesBetweenFormatsWithSimpleDateFormat {
public static void main(String[] args) {
    try {
     String dateStr = "12:30";

        DateFormat srcDf = new SimpleDateFormat("hh:mm");
        Date date = srcDf.parse(dateStr);
        DateFormat destDf = new SimpleDateFormat("HH:mm:ss");
         dateStr = destDf.format(date);
        System.out.println("Converted date is : " + dateStr);
    }
    catch (ParseException e) {
        e.printStackTrace();
    }
}
} 

我正在尝试将日期格式从hh:mm转换为HH:mm:ss。虽然这段代码一直处于正常状态,但它并没有为12-1之间的时间提供所需的结果。例如:12:30给它00:30(应该是12:30),而1:30则给予13:30。 在这种情况下应该做些什么改变?

3 个答案:

答案 0 :(得分:0)

您需要在解析器中添加AM PM标记

 DateFormat srcDf = new SimpleDateFormat("hh:mm a");

并指定给定日期字符串中的AM PM

 String dateStr = "12:30 PM";

否则java不能简单地知道hte hour是AM还是PM。

答案 1 :(得分:0)

SimpleDateFormat只对输入String进行解析。 它没有进行任何隐式转换。 它就像用输入字符串的解析值填充Date对象字段一样。

请参阅以下链接,了解可能的日期模式 http://beginnersbook.com/2014/01/how-to-convert-string-to-24-hour-date-time-format-in-java/

答案 2 :(得分:0)

如果你想要第二个,那么使用下面的代码,但第二个不是从给定的格式得到它为什么它将总是00。

结果: - 转换日期为:12:30:00 AM

DateFormat destDf = new SimpleDateFormat("hh:mm:ss a");