#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
.