当前位置:  开发笔记 > 编程语言 > 正文

SimpleDateFormat使用AM/PM解析错误

如何解决《SimpleDateFormat使用AM/PM解析错误》经验,为你挑选了1个好方法。

我试图将输入字符串日期解析为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



1> Saajan Singh..:

自己回答:

我需要用

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

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有