【问题标题】:How to Compare a Time with two other time provided?如何比较一个时间与提供的另外两个时间?
【发布时间】:2013-03-22 07:13:45
【问题描述】:

一直很困惑..如果我们比较时间,绝对不推荐使用字符串...但是如果它是(HH:mm:ss)的格式。我应该如何比较它们来做某事?

例如: 目标1:9:00:00 目标2:23:00:00

输入大于Target1小于Target2的比较逻辑怎么办?

if(input > Target1 && input < Target2){
  //do statement A
}else{
  //do statement B
}

所以如果我的输入时间是 10:00:00,它应该运行语句 A 如果输入时间是 23:01:00,它应该运行语句 B 我该怎么做?大于 (>) 小于 (

【问题讨论】:

标签: android time


【解决方案1】:

将它们作为字符串,您可以将它们从 SimpleDateFormat 转换为 Date 对象。

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");

最简单的方法是将它们转换为毫秒数

long time1 = sdf.parse(Target1).getTime();
long time2 = sdf.parse(Target2).getTime();
long inputTime = sdf.parse(input).getTime();

这样你实际上是在做一个整数比较,你可以忘记所有的日期时间业务。

if(inputTime > time1 && inputTime < time2)

【讨论】:

    【解决方案2】:
    SimpleDateFormat df=new SimpleDateFormat("hh:mm:ss");             
    Date d1=df.parse(dateToPars); 
    
    d1.after(otherTimeYouWantTocompare);  OR 
    d1.before(otherTimeYouWantTocompare); 
    

    但您必须以上述格式提供时间

    【讨论】:

    • 我在其他帖子中提到的“之后”和“之前”之前尝试过,但它对我不起作用... =(
    • 你有什么异常吗?或者你没有得到正确的结果?
    【解决方案3】:

    您可以使用calender函数.getTimeInMillis()计算差异,并获得2个不同时间的差异,这里您只需在Calender中设置您的特定时间并进行比较

    try{
                Calendar calender = Calendar.getInstance();
                Calendar calDb = Calendar.getInstance();
                Calendar matchd = Calendar.getInstance();
    
                mYear = calender.get(Calendar.YEAR);
                mMonth = calender.get(Calendar.MONTH);
                mDay = calender.get(Calendar.DAY_OF_MONTH);
    
                mendYear = calDb.get(Calendar.YEAR);
                mendMonth = calDb.get(Calendar.MONTH);
                mendDay = calDb.get(Calendar.DAY_OF_MONTH);    
                           // Here you can change day values        
                        calDb.set(Calendar.DAY_OF_MONTH, mDay-1);
    
                strbeforedate = mDateFormat.format(calDb.getTime());
                curentdate = mDateFormat.format(calender.getTime());
    
                calDb.setTime(mDateFormat.parse(strbeforedate));
                calender.setTime(mDateFormat.parse(curentdate));
    
    
    
                String mydate = "2013.03.14 03:11";
                String mdatetime = "";
    
                deletepath =  new ArrayList<String>();          
    
                    try{
                        // here your matching goes and pass date here 
    
                         matchd.setTime(mDateFormat.parse(mdatetime));
                         long diff = calDb.getTimeInMillis() - calender.getTimeInMillis();
                         long matchdiff = matchd.getTimeInMillis() - calender.getTimeInMillis();
                            if(diff < matchdiff){
    
                                         // do your work here
                            }else{
    
                             // do your else work here
    
                            }
                    }catch(Exception e){
                        e.printStackTrace();
                    }                   
            }
    
            }catch(Exception e){
                e.printStackTrace();
            }
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-25
      • 1970-01-01
      • 2012-02-04
      • 1970-01-01
      • 1970-01-01
      • 2016-08-06
      • 1970-01-01
      相关资源
      最近更新 更多