Работа с временем в java
Прошу помощи, туплю к вечеру ))) Есть строка, представляющая собой время, например "17:38:55" Нужно вычислить дельту с текущим временем, ее можно получить просто в мс.
Источник: Stack Overflow на русском
Прошу помощи, туплю к вечеру ))) Есть строка, представляющая собой время, например "17:38:55" Нужно вычислить дельту с текущим временем, ее можно получить просто в мс.
SimpleDateFormat.parse()
.Date.getTime()
. Помним, что мы не указали день, месяц и год, поэтому распарсенная дата будет представлять время 1 января 1970 года.Calendar.getInstance()
.Calendar.set()
.Calendar.getTimeInMillis()
.1) Чтобы вычислить разницу меж текущим и заданным временем надо одно из другого вычислить, приведя их к единому виду.
2) Для сего нам надо из заданной строки получить объект Calendar или Date, из коих, в свою очередь, получить миллисекунды.
3) Чтобы привести строку к объекту Date надо пояснить ему как распарсить строку.
4) Для парсинга дат есть классы DateFormat и SimpleDateFormat.
5) Делаем так:
String dateStr="17:38:55";
DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss Z", new Locale("en"));
Date d = new Date();
try
{
//преобразуем String в Date
d = dateFormat .parse(dateStr);
//получаем миллисекунды из даты
long myMills=d.getTime();
//получаем текущие миллисекунды
long currentMils=System.currentTimeMillis();
//теперь можно сравнивать
long doIt=currentMils-myMills;
System.out.print(doIt);
} catch (ParseException e)
{
System.out.print("какая-то досадная ошибка!");
}