Форматируйте миллисекунды, чтобы упростить формат - PullRequest
5 голосов
/ 30 июня 2011

При форматировании миллисекунд в формат SimpleDate я вижу странный результат:

Вывод:

    Start date time: 11/06/30 09:45:48:970
    End date time: 11/06/30 09:45:52:831
    Execution time: 01:00:03:861

Сценарий:

    long dateTimeStart = System.currentTimeMillis();    
    // some script execution here
    long dateTimeEnd = System.currentTimeMillis();

    "Start date time: " + GlobalUtilities.getDate(dateTimeStart, "yy/MM/dd hh:mm:ss:SSS"); 
    "End date time: " + GlobalUtilities.getDate(dateTimeEnd, "yy/MM/dd hh:mm:ss:SSS"); 
    "Execution time: " + GlobalUtilities.getDate((dateTimeEnd - dateTimeStart), "hh:mm:ss:SSS");

Метод:

    public static String getDate(long milliseconds, String format)
    {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(milliseconds);
    }

Есть идеи, почему значение времени выполнения так отключено? Должно быть 00: 00: 03: 861, а не 01: 00: 03: 861

Спасибо

Ответы [ 2 ]

3 голосов
/ 01 июля 2011

потому что вы конвертируете разницу во времени в дату.Подробно, это именно то, что происходит:

  1. SimpleDateFormat.format (длинные миллисекунды) вычисляет дату: время рождения Unix + миллисекунды.
  2. Это время также корректируется со временемОтличие от GMT.
  3. С этими двумя данными вы получите странный результат.Чтобы проверить информацию выше, вы можете добавить день, месяц и год к дате.

К сожалению, вы можете исправить это, вручную преобразовав свое время.

1 голос
/ 01 июля 2011

Время выполнения выключено, потому что конструктор Date занимает много времени, указывая количество миллисекунд с 1970-01-01.

...