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。 在这种情况下应该做些什么改变?
答案 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");