2

私はこのコードを持っています:

public static String formatMinSecOrHourMinSec(final String length) {
        try {
            final SimpleDateFormat hhmmss = new SimpleDateFormat("HH:mm:ss", Locale.GERMAN);
            final Date date = hhmmss.parse(length);
            final GregorianCalendar gc0 = new GregorianCalendar(Locale.GERMAN);
            gc0.setTime(date);
            if(gc0.getTimeInMillis() >= 3600 * 1000){
                return hhmmss.format(gc0.getTime());
            }else{
                final SimpleDateFormat mmss = new SimpleDateFormat("mm:ss");
                return mmss.format(gc0.getTime());                    
            }
        } catch (final ParseException e) {
            LOGGER.debug("Konnte die Länge nicht parsen: " + length + "\n" + e);
            return length;
        }
    }

01:29:00lengthに設定すると01:29:00が返されると推定されますが、 29:00が返されます。これは、gc0.getTimeInMillis()返される時間が予想よりも 1 時間少ない (3600 * 1000) ためです。私は何を間違っていますか?

4

2 に答える 2

1

これは、java.util.Date がデフォルトのタイム ゾーンを使用しているためです。(ミリ秒単位で時間dateを表示すると表示されます)。それを修正するには、次を試してください:

final SimpleDateFormat hhmmss = new SimpleDateFormat("HH:mm:ss");
hhmmss.setTimeZone(TimeZone.getTimeZone("UTC"));
于 2013-10-22T11:21:43.327 に答える