【问题标题】:Check if a given time-stamp lies between two time-stamp in android检查给定的时间戳是否位于android中的两个时间戳之间
【发布时间】:2017-02-23 06:16:51
【问题描述】:

我想检查给定的时间戳是否介于两个时间戳之间


下面是我的代码:

public static boolean isTimeBetweenTwoTime(String initialTime, String finalTime, String currentTime) throws ParseException {
        String reg = "^([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$";
        if (initialTime.matches(reg) && finalTime.matches(reg) && currentTime.matches(reg)) {
            boolean valid = false;
            
            //Start Time
            java.util.Date inTime = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").parse(initialTime);
            Calendar calendar1 = Calendar.getInstance();
            calendar1.setTime(inTime);

            //Current Time
            java.util.Date checkTime = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").parse(currentTime);
            Calendar calendar3 = Calendar.getInstance();
            calendar3.setTime(checkTime);

            //End Time
            java.util.Date finTime = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").parse(finalTime);
            Calendar calendar2 = Calendar.getInstance();
            calendar2.setTime(finTime);

            if (finalTime.compareTo(initialTime) < 0) {
                calendar2.add(Calendar.DATE, 1);
                calendar3.add(Calendar.DATE, 1);
            }

            java.util.Date actualTime = calendar3.getTime();
            if ((actualTime.after(calendar1.getTime()) || actualTime.compareTo(calendar1.getTime()) == 0)&& actualTime.before(calendar2.getTime())) {
                valid = true;
            }
            return valid;
        } else {
            throw new IllegalArgumentException("Not a valid time, expecting MM/dd/yyyy HH:mm:ss format");
        }

}

但它不适合我,请帮助

【问题讨论】:

  • 如果您只转换为 Unix 时间戳,则有更简单的方法...
  • @cricket_007 如果你知道答案然后回答他,不要投票关闭。
  • @maňish 谁说我投票了?
  • @cricket_007 足够公平,很快就会揭晓
  • @Doe It this working fine ?

标签: java android datetime


【解决方案1】:

试试这个简单的逻辑:

    long mills = System.currentTimeMillis();
    SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
    Date resultdate = new Date(mills);
    String currentTime = sdf.format(resultdate);
    System.out.println(sdf.format(resultdate));

    try{
        java.util.Date inTime1 = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").parse(initialTime);
        java.util.Date inTime2 = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").parse(finalTime);
        java.util.Date inTime3 = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").parse(currentTime);

        if (inTime3.getTime() > inTime1.getTime() && inTime3.getTime() < inTime2.getTime()){
            Log.e("TimeDifference","inTime3 is between inTime1 and inTime2");
            return true;
        }else{
            Log.e("TimeDifference","in Else Condition");
            return false;
        }

    }catch (Exception e){
        e.printStackTrace();
        return false;
    }

如果您有任何问题,请告诉。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    • 2022-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多