Как добавить час к моему времени - PullRequest
3 голосов
/ 16 мая 2011

У меня есть время в следующем формате, и я использую это значение для задания текста моей кнопки.

String strDateFormat = "HH:mm: a";
SimpleDateFormat sdf ;
 sdf = new SimpleDateFormat(strDateFormat);
startTime_time_button.setText(sdf.format(date));

Теперь мой вопрос: можно ли добавить один час к этому формату времени?

Ответы [ 4 ]

9 голосов
/ 16 мая 2011

Вы должны использовать Calendar:

Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR_OF_DAY, 1);
date = cal.getTime();
6 голосов
/ 16 мая 2011

Я думаю, что лучший и самый простой способ - использовать Apache Commons Lang:

Date incrementedDate = DateUtils.addHour(startDate, 1);

http://commons.apache.org/lang/api-2.6/org/apache/commons/lang/time/DateUtils.html

3 голосов
/ 16 мая 2011
Calendar cal = Calendar.getInstance();
cal.setTime(setYourTimeHereInDateObj);
cal.add(Calendar.HOUR, 1);
Date timeAfterAnHour = cal.getTime();
//now format this time 

См

2 голосов
/ 16 мая 2011

Если вы не можете использовать предложение Jabal (т. Е. Вам не разрешено использовать не-JDK библиотеки), вы можете использовать это:

long hour = 3600 * 1000; // 3600 seconds times 1000 milliseconds
Date anotherDate = new Date(date.getTime() + hour);

Если случайно вы ищете преобразование часового пояса, вы можете просто назначить один для вашего форматера, он будет работать быстрее:

TimeZone timeZone = TimeZone.getTimeZone("UTC"); // put your time zone instead of UTC
sdf.setTimeZone(timeZone);

КСТАТИ. Жесткий формат даты - не самая лучшая идея. Если у вас нет веских причин для этого, вы должны использовать тот, который действителен для локали конечного пользователя (DateFormat df = DateFormat.getTimeInstance(DateFormat.DEFAULT, locale);). В противном случае вы создаете дефект i18n (кого это волнует, я знаю).

...