0

重複の可能性:
2 つの 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

しかし、1 分追加すると出力が 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を取得します。

これらの他の返信のいくつかは、問題を解決するためのより良い方法です (h/m/s を再度取得するのではなく、最後に sdfkk.format(reqEndtimekk) を呼び出すことが主な方法の 1 つです)。

于 2013-01-24T05:34:11.840 に答える