函数名 上班时间修正
arrivalTimeRevision (时间校正)
参数1  originalTime, 原始时间(上班打卡的时间)
参数2  timeUnit     校正的时间单位
return adjustedTime
函数功能: 根据原始时间和时间单位,将上班时间作类似进位处理
           如原始时间 8:32 时间单位 15分钟 : 校正后时间 8:45
           如原始时间 8:25 时间单位 15分钟 : 校正后时间 8:30请大家帮帮忙,十分感谢。

解决方案 »

  1.   

    取出分数m,如32,25
    int d = m % 15;
    if(d == 0)
      return originalTime;
    else return originalTime在分上加(15 - d)。
      

  2.   

    要不来个狠的?
    public static Date arrivalTimeRevision(Date originalTime, int timeUnit) {
    long time = originalTime.getTime();
    int r = (timeUnit * 60 * 1000);
    time = (long) Math.ceil(time / r) * r ;
    Date adjustedTime = new Date(time);

    return adjustedTime;
    }test code:
    System.out.println(arrivalTimeRevision(new Date(), 15));
      

  3.   

    不好意思,改一下
    public static Date arrivalTimeRevision(Date originalTime, int timeUnit) {
    long time = originalTime.getTime();
    int r = 60 * 1000;
    time /= r;
    time = (long) Math.ceil(time * 1.0 / timeUnit ) * timeUnit * r ;
    Date adjustedTime = new Date(time);

    return adjustedTime;
    }
      

  4.   

    将长整型时间originalTime.getTime()/除以15分对应的整数(1000*60*15)
    得到的是整数部分,然后加1
    然后在乘回去,公式如下:
    new Date(originalTime.getTime()/(1000*60*15)+1)*(1000*60*15);
      

  5.   

    问题我自己已经解决了,不过还是非常谢谢大家。
    我把我的思路那给大家看看。public static String leaveTimeRevision (String originalTime,String timeUnit){
    String adjustedTime ="";
    String[] key=originalTime.trim().split(":");
    key[0]=String.valueOf(Integer.parseInt(key[0]));
    key[1]=String.valueOf(Integer.parseInt(key[1]));
    int original=Integer.parseInt(key[1]);
    int unit= Integer.parseInt(timeUnit);
    if(original%unit!=0){
    int s=original/unit;
    int ss=s*unit+unit;
    // int ss=s*unit;
    adjustedTime=key[0]+":"+ss;
    SimpleDateFormat sDateFormat = new SimpleDateFormat("hh:mm");
    try {
    Date date=sDateFormat.parse(adjustedTime);
    adjustedTime=sDateFormat.format(date);
    } catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }else{
    adjustedTime=originalTime;
    }
    return adjustedTime;
    }