У меня есть формат даты, в котором предполагается хранить информацию о часовом поясе:
SimpleDateFormat dateWithZoneFormat
= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Пример значения даты,
2019-01-18T07:00:00.000+0530
Константа зоны в вышеуказанную дату - Азия / Калькутта (+0530), Ссылка.
Теперь при отображении на машине, которая находится в другом часовом поясе, я хочу, чтобы указанная выше дата показывала время в той же зоне, что и записанная в вышеуказанной дате, т.е. +530. Это не постоянные зоны, которые можно изменить в зависимости от страны пользователя.
Мой код отображения в Java, как показано ниже:
SimpleDateFormat dateWithZoneFormat
= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
SimpleDateFormat displayDateFormat
= new SimpleDateFormat("MM/dd/yyyy hh:mm a");
Date date = DateUtils.getZoneDate("2019-01-18T07:00:00.000+0530");
String displayDate = DateUtils.displayDateFormat.format(date);
displayTag = displayDate + " " + displayTag;
Проблема с приведенным выше кодом заключается в том, что он выбирает зону по умолчанию для машины, на которой он работает, при создании времени отображения.
Проще говоря, если время, записанное в зоне +0530 при отображении, должно показывать время отображения в зоне +0530, если оно записано в зоне +0100, оно должно отображаться в том же времени зоны.
Как показать указанную выше дату в том же формате зоны, в которой она была записана, а не в той, где она отображается (т.е. не в часовом поясе по умолчанию для машины).
Можно ли каким-либо образом извлечь только информацию о зоне в указанной выше строке даты?