Я бы ожидал, что приведенный ниже код вернет мне время в мой местный часовой пояс (US EST), но я продолжаю получать время назад на 5 часов раньше, чем мое текущее время. Значение моего userTimeZoneOffset
составляет -300, что является правильной сметой минут от UTC для моего часового пояса. dateAndTimeFormat
установлен на «MM/dd/yyyy h: mm a» для меня.Не могу получить время для расчета на основе UTC
Как я могу получить переменную currentDateAndTime
ниже, чтобы рассчитать расчет по UTC, а не мой текущий часовой пояс?
String dateAndTimeFormat = i18nUtil.getValue(locale, "dateAndTimeFormat");
SimpleDateFormat sdf = new SimpleDateFormat(dateAndTimeFormat);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
if (userTimeZoneOffset != null) {
calendar.add(Calendar.MINUTE, userTimeZoneOffset);
}
String currentDateAndTime = sdf.format(calendar.getTime());
return currentDateAndTime;
Вставки обязательного «использовать Jodatime» комментарий –
Вы создаете календарь, чье время текущее время, а затем удалить 300 минут от него, и затем удивляются, что это не в настоящее время больше? Если вам нужно текущее время, 'Calendar.getInstance()' достаточно. Если вы хотите, чтобы текущее время было отформатировано в вашем часовом поясе, то достаточно «нового SimpleDateFormat (pattern) .format (new Date())». –
Я уже знаю и понимаю 'new Date()' даст мне время в моем текущем часовом поясе. Я хочу получить время UTC и применить любое смещение, переданное ему, и вернуть это. –