如何在Android中使用AM OR PM格式进行两次比较

时间:2014-03-26 05:06:06

标签: android time compare datetime-format

我想比较两次,比如12AM和1AM。我已经做了以下功能

public int timeValidation(){
    String stTime=btn_srt_time.getText().toString();
    String endtime=btn_end_time.getText().toString();

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("kk:mm");

     Date date1;
     Date date2;
    try {

        date1 = simpleDateFormat.parse(stTime);         
        System.out.println("================== date1=================="+date1);

        date2 = simpleDateFormat.parse(endtime);
        System.out.println("===========> date 2 ==============>"+date2);            

        return date1.compareTo(date2);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return 0;

 }

比较时间是在12:00 AM到12:45 AM之间,它给出了正确答案。 但是当我比较凌晨12点到凌晨1点时,它说凌晨1点就是凌晨12:00 请帮忙......

2 个答案:

答案 0 :(得分:3)

使用yyyy-MM-dd hh:mm:ss a

HH将是一天中的小时(0-23),而hh将是上午/下午(1-12)的小时。因此,您的日期格式02:30:00将被解析为而不是转换为PM版本(在一天中的小时将是14:30:00)。 有关更多参考,请查看this

答案 1 :(得分:0)

Date time1, time2; 
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm");

Calendar cal1 = Calendar.getInstance();
// 12:00 AM
cal1.set(0, 0, 0, 00, 00);

Calendar cal2 = Calendar.getInstance();
// 01:00 AM
cal2.set(0, 0, 0, 01, 00);

try {
            time1 = sdf.parse((String) DateFormat.format("hh:mm aaa", cal1));
            time2 = sdf.parse((String) DateFormat.format("hh:mm aaa", cal2));
        }catch (Exception e){}

if(time2.after(time1)){
 //time2 is greater
}else if(time2.before(time1)){
//time1 is greater
}else{
//both time is equal
}