2015-04-13 3 views
3

Я знаю, что класс Date может быть очень болезненным время от времени.Что случилось с вычитанием времени?

Не могли бы вы дать мне некоторые болеутоляющие средства в виде совета о том, как вычитать время?

Что у меня есть:

SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy HH:mm"); 
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss"); 
String s = "13.04.2015 16:00"; 
String s2 = "13.04.2015 15:30"; 
Date date = format.parse(s); 
System.out.println(timeFormat.format(date.getTime() - format.parse(s2).getTime())); 

Это дает мне 02:30:00, но я хотел бы получить 00:30:00 :)

+0

Какую версию Java вы используете? – Puce

+2

всегда указывать 'Locale' в' SimpleDateFormat'. Это защитит вас от многих ошибок. BTW, 00:30 UTC 02:30 Kiyv (я полагаю, это часовой пояс вашего местоположения), поэтому ваш код работает очень хорошо. –

+0

@SashaSalauyou О, теперь я вижу. Спасибо за совет! –

ответ

6

Я предлагаю, чтобы заставить общую TimeZone для как SimpleDateFormat:

format.setTimeZone(TimeZone.getTimeZone("UTC")); 
timeFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 

перед форматированием date.

+0

это должно сделать трюк. – Tejas

+0

@Tejas Да, это было! –

3

Я не уверен, что вы привязаны к классу Java Date по некоторым требованиям, но если вы много работаете с датой и временем в своем приложении, я рекомендую Joda-Time library. Он решает многие проблемы из коробки и позволяет быстрее выполнять операции по дате и времени.

+0

Да, я обязательно посмотрю! –

Смежные вопросы