我试图将输入字符串日期解析为Date.它无法检测输入中的AM/PM标签.它应该增加指定日期和返回日期的时间.但它无法解析AM/PM标签.03:00 PM在日期中解析为03:00:00.应该是15:00:00.
输出:日期:星期二12月22日03:00:00 UTC 2015日历:星期二12月22日星期二11:15:00结果:2015-12-22 11:15 AM
我使用错误的日期格式吗?
这是我的代码:
import java.util.*; import java.text.*; public class Main { public static void main(String[] args) throws Exception { System.out.println("Result : "+Main.addHoursToDate("2015-12-22 03:00 `enter code here`PM",8,15,0)); } public static String addHoursToDate(String date, int hoursToAdd, int minsToAdd, int secToAdd){ String result = ""; try{ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm aa"); Date dt = sdf.parse(date); System.out.println("Date : " + dt.toString()); Calendar cl = Calendar.getInstance(); cl.setTime(dt); cl.add(Calendar.HOUR_OF_DAY, hoursToAdd); cl.add(Calendar.MINUTE, minsToAdd); cl.add(Calendar.SECOND, secToAdd); SimpleDateFormat dfCal = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy"); result = Main.formatDate(cl.getTime().toString(),"EEE MMM dd HH:mm:ss z yyyy","yyyy-MM-dd HH:mm aa"); System.out.println("Calender : " + cl.getTime().toString()); }catch(Exception e){ return e.toString(); } return result; } public static String formatDate(String date, String currentFormat, String requiredFormat) throws Exception { String result = ""; boolean flag = false; try { SimpleDateFormat currentFormatter = new SimpleDateFormat(currentFormat); Date currentDate = currentFormatter.parse(date); flag = date.equals(currentFormatter.format(currentDate)); if (!flag){ throw new Exception(); // We are throwing this exception because the date has been parsed "successfully" // but still we are not sure that it has been parsed "correctly"!!! } SimpleDateFormat requiredFormatter = new SimpleDateFormat(requiredFormat); result = requiredFormatter.format(currentDate); }catch (Exception e){ return ""; } return result; } }
Saajan Singh.. 7
自己回答:
我需要用
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm aa");
代替
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm aa");
H:用于24小时表示法.
参考 https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
自己回答:
我需要用
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm aa");
代替
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm aa");
H:用于24小时表示法.
参考 https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html