Получение миллисекунд из JSpinner

#java #swing #date #milliseconds #jspinner

#java #качать #Дата #миллисекунды #jspinner

Вопрос:

Я пытаюсь извлечь миллисекунды между фактическим временем и временем, определенным JSpinner элементом управления ( spnTimer ). Формат счетчика: чч: мм: сс. Поскольку я довольно новичок в Java, я не могу получить желаемый результат. Когда я попытался преобразовать время счетчика в строку, я получил время назад в 1970 году.

Любая помощь была бы высоко оценена.

 String s = spnTimer.getValue().toString();
System.out.println("spinner time: "  s);
  

Результат:

 spinner time: Thu Jan 01 09:43:19 CET 1970
  

Комментарии:

1. Привет! Можем ли мы запросить еще немного контекстного кода? Глядя на API, неясно, какие значения присутствуют в счетчике, если вы получаете это время по умолчанию.

Ответ №1:

Счетчик возвращает значение «эпохи». Эпоха традиционно соответствует 0 часам, 0 минутам и 0 секундам (00:00:00) по всемирному координированному времени (UTC) на определенную дату, которая варьируется от системы к системе, и значение эпохи измеряет секунды с тех пор. Попробуйте следующий код, держу пари, он сработает

 Date spinnerValue = (Date) spinner.getValue();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MMM/dd");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MMM/dd HH:mm:ss");
Date actualDate = sdf2.parse(sdf1.format(new Date())   " "   sdf.format(spinnerValue), new ParsePosition(0));
  

Надеюсь, это поможет

Комментарии:

1. Да, это работает. Спасибо. Но, как получить разницу в миллисекундах?

2. Проверьте, делает ли это Date.getTime() — actualDate.getTime() 🙂

3. Пожалуйста, не учите молодых использовать давно устаревший и заведомо хлопотный SimpleDateFormat класс. По крайней мере, не в качестве первого варианта. И не без каких-либо оговорок. Сегодня у нас есть намного лучшее в java.time , современном Java API даты и времени и его DateTimeFormatter .