0

可能的重复:
计算两个 Java 日期实例之间的差异

我无法解决以下问题,请帮助我。那是我将现有时间添加到更多时间(分钟,秒或小时)。我无法写下我写的 wt 类型我提到没有给出正确答案,

String allexam_end_time="18:59:00";//48540000
long oneminute=60000;
try{
    SimpleDateFormat sdfkk = new SimpleDateFormat("hh:mm:ss");
    Date reqEndtimekk = sdfkk.parse(allexam_end_time);
    long total=reqEndtimekk.getTime()+oneminute;
    System.out.println("TOtal miliseconds         "+reqEndtimekk.getTime()+oneminute);
    System.out.println("total---------"+total);
    int s = (int)(total / 1000) % 60;
    int m = (int)(total / (1000 * 60)) % 60;
    int h=  (int) (total / (1000 * 60 * 60)) % 24;
    System.out.println(h+":"+m+":"+s);
}catch(Exception e){

}

输出

    output is TOtal miliseconds4854000060000
    total---------48600000
    13:30:0

但我需要回答,如果加一分钟意味着输出应该 19:00:00 怎么解决?

4

3 回答 3

1

也许这会有所帮助!

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TimeUtility {

    public static void main(String[] args) throws ParseException {
        String examEndTime = "18:59:00";

        System.out.println(modifyTime(examEndTime, 60));
    }

    private static String modifyTime(String origTime, int modSecs) throws ParseException {

        SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
        timeFormat.setLenient(false);
        Date time = timeFormat.parse(origTime);
        time.setSeconds(modSecs);
        return timeFormat.format(time);
    }

}

输出将是
19:00:00

于 2013-01-24T05:24:15.453 回答
1

您可以使用 GregorianCalendar,这是一个代码示例:

    String allexam_end_time = "18:59:00";// 48540000
    SimpleDateFormat sdfkk = new SimpleDateFormat("hh:mm:ss");
    Date reqEndtimekk = sdfkk.parse(allexam_end_time);
    Calendar instance = GregorianCalendar.getInstance();
    instance.setTime(reqEndtimekk);
    //add one minute        
    instance.add(GregorianCalendar.MINUTE, 1);

    System.out.println(sdfkk.format(instance.getTime()));

输出

07:00:00
于 2013-01-24T05:21:03.550 回答
0

在我看来,您的代码可能正在进行一些时区转换。例如,我计算 18:59:00 为 (18*60*60 + 59*60)*1000 = 68340000毫秒。但是如果我将同样的东西放入 Java 并调用 getTime(),我会得到39540000毫秒,而你会得到48540000

其中一些其他回复是解决您的问题的更好方法(一件主要的事情是在最后调用 sdfkk.format(reqEndtimekk) 而不是再次获得 h/m/s),但您的但似乎在时区附近。

于 2013-01-24T05:34:11.840 回答