Я пробовал следующий код, который должен позволить мне преобразовать временной проход в качестве параметра в строку с еще одним часом (GMT + 1).
Но я всегда получаю то же время у меня есть в моем объекте TimeJava-преобразовать объект Time (GMT) в String (GMT + 1)
public static String getFormattedTimeLabel(final Time time) {
Calendar cal = new GregorianCalendar();
cal.setTimeInMillis(time.getTime());
SimpleDateFormat sdf = new SimpleDateFormat("HH : mm");
sdf.setCalendar(cal);
sdf.setTimeZone(TimeZone.getDefault());
return sdf.format(cal.getTime());
}
Кто-нибудь знает, как решить эту проблему?
EDIT: Хорошо, поэтому я создал следующую функцию в контроллере.
Часовой пояс, который я установил в формате простой даты, является часовым поясом клиента, который восстанавливается благодаря HttpServletRequest.
После кода вы можете распечатать результат System.out.
private Time getTimeLocal(Time requestTime) {
Calendar cal = new GregorianCalendar();
cal.setTimeInMillis(requestTime.getTime());
SimpleDateFormat sdf = new SimpleDateFormat("HH : mm");
sdf.setCalendar(cal);
System.out.println(requestTime);
sdf.setTimeZone(tz);
System.out.println(tz.getID());
String dt = sdf.format(cal.getTime());
Date date = null;
try {
date = sdf.parse(dt);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(dt);
return new Time(date.getTime());
}
10:00:00 //the Time object
Europe/Paris // The id of the client timezone (GMT+1 for me)
10 : 00 //the date. the time printed is not correct it should be set with the timezone of the client so for me GMT+1 so 11:00:00
@BoristheSpider TimeZone.getDefault() должен быть Timezone системы. и я не использую тот, который мне нужен, потому что он может меняться в зависимости от страны, в которой используется приложение. –
Посмотрите на эту тему http://stackoverflow.com/questions/3581258/adding-n-hours- to-a-date-in-java –
@ Spidi'sWeb: вопрос заключается не в добавлении часов, а в настройке часового пояса и форматировании. –