Это ценность, которая у меня есть,
Sun Mar 29 2020 02:55:00 GMT+0530
и я хочу получить, например
Азия/Калькутта
как вывод. Заранее спасибо.
Это ценность, которая у меня есть,
Sun Mar 29 2020 02:55:00 GMT+0530
и я хочу получить, например
Азия/Калькутта
как вывод. Заранее спасибо.
получить значение TimeZone, используя отметку времени
No.
Вы не можете определить часовой пояс по смещению.
Многие часовые пояса могут иметь одно и то же смещение от UTC (количество часов, минут и секунд впереди или позади нулевого меридиана).
См. список названий часовых поясов в Википедии. Нажмите на заголовок столбца, чтобы отсортировать по смещению. Обратите внимание, как часто несколько зон имеют одно и то же смещение.
Конкретно для вашего примера обратите внимание, что в настоящее время у нас есть две зоны, которые по совпадению имеют смещение на пять с половиной часов раньше UTC:
Asia/Kolkata
(Индия)Asia/Colombo
(Шри-Ланка)Таким образом, без дальнейшего ввода невозможно узнать, имел ли в виду автор вашей входной строки время Индии или время Шри-Ланки.
Кстати, имя Asia/Calcutta
изменено на Asia/Kolkata
. Если ваша система не имеет такого имени, то ваши tzdata устарели на несколько лет. Всегда обновляйте все копии tzdata в операционных системах, серверах баз данных, таких как Postgres, и средах выполнения, таких как Java.
Еще одна сложность: политики часто меняют смещение, используемое в их юрисдикциях.
Таким образом, хотя сегодня вся Индия использует одно и то же смещение +05:30, это не всегда было так и вряд ли всегда будет так в будущем (исходя из истории того, как часто меняются зоны по всему миру).
Стандарт ISO 8601 определяет множество удобных форматов для представления значений даты и времени в виде текста.
2020-01-23T12:34:56.123456789+05:30
Платформа java.time, встроенная в Java 8 и более поздние версии, разумно расширяет один из этих форматов, добавляя название часового пояса в квадратных скобках. Я предлагаю использовать этот формат, если это возможно.
2020-01-23T12:34:56.123456789+05:30[Asia/Kolkata]