Конвертировать IST в PST в Java - PullRequest
0 голосов
/ 13 мая 2011

Привет, у меня есть поле даты / времени, которое я хочу получить. Преобразовать текущий IST в текущий PST в Java ... нужна помощь ....

ex: теперь в IST его: 13/may/2011 3.32.58pm хочуто же самое в PST то есть 13/may/2011 3.02.58 AM

спасибо ........

Ответы [ 2 ]

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

Если вы заинтересованы в текущем времени, вам вообще не нужно знать об IST ... только текущий экземпляр и преобразование в PST. Вы можете сделать это с чем-то вроде:

Date now = new Date();
TimeZone zone = TimeZone.getTimeZone("America/Los_Angeles"); // For example...
DateFormat format = new SimpleDateFormat("..."); // Put your pattern here
format.setTimeZone(zone);
String text = format.format(now);

Лично я бы порекомендовал вам использовать Joda Time для всей работы с датой / временем, поскольку это намного более приятный API - но в этом случае он действительно довольно прост даже со встроенным API.

0 голосов
/ 19 января 2017

Ответ Джона Скита правильный, но теперь он устарел с появлением кода java.time в Java 8 и более поздних версиях.

java.time

Класс Instant представляет момент на временной шкале в UTC с разрешением наносекунд (до девяти (9) цифрдесятичная дробь).

Получить текущий момент в UTC.

Instant instant = Instant.now();

Настройка на часовой пояс.

Указать правильное имя часового пояса в формате continent/region, например America/Montreal, Africa/Casablanca или Pacific/Auckland.Никогда не используйте 3-4-буквенное сокращение, например EST или IST, так как они не истинных часовых поясов, не стандартизированы и даже не уникальны (!).

ZoneId z = ZoneId.of( "America/Los_Angeles" );
ZonedDateTime zdt = instant.atZone( z );

Чтобы создать строку в стандартном формате ISO 8601 , вызовите toString.Для альтернативного форматирования используйте класс DateTimeFormatter, уже описанный во многих других Вопросах и ответах.

String output = zdt.format( myDateTimeFormatter );

См. Тот же момент в Индийском времени , в частности Asia/Kolkata.

ZoneId zKolkata = ZoneId.of( "Asia/Kolkata" );
ZonedDateTime zdtKolkata = zdt.withZoneSameInstant( zKolkata );

Я не уверен, что под IST Вы имели в виду стандартное время Индии или ирландское стандартное время.Давайте рассмотрим Europe/Dublin.В этой зоне в настоящее время используется нулевое смещение +00:00.Так что время настенных часов совпадает с UTC.

ZoneId zDublin = ZoneId.of( "Europe/Dublin" );
ZonedDateTime zdtDublin = zdt.withZoneSameInstant( zDublin );

См. Этот код, запущенный на IdeOne.com .

instant.toString (): 2017-02-13T07: 28: 57,738Z

zdt.toString (): 2017-02-12T23: 28: 57,738-08: 00 [America / Los_Angeles]

zdtKolkata.toString (): 2017-02-13T12: 58: 57.738 + 05: 30 [Азия / Калькутта]

zdtDublin.toString (): 2017-02-13T07: 28: 57.738Z[Европа / Дублин]


О java.time

Инфраструктура java.time встроена в Java 8 и более поздние версии.Эти классы заменяют проблемные старые устаревшие классы даты и времени, такие как java.util.Date, Calendar, & SimpleDateFormat.

Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .

Чтобы узнать больше, см. Oracle Tutorial .И поиск переполнения стека для многих примеров и объяснений.Спецификация: JSR 310 .

Где получить классы java.time?

  • Java SE 8 и SE 9 и более поздних версий
    • Встроенный,
    • Часть стандартного Java API с встроенной реализацией.
    • Java 9 добавляет некоторые незначительные функции и исправления.
  • Java SE 6 и SE 7
    • Большая часть функций java.time перенесена на Java 6 & 7 в ThreeTen-Backport .
  • Android

Проект ThreeTen-Extra расширяет java.time дополнительными классами.Этот проект является полигоном для возможных будущих дополнений к java.time.Здесь вы можете найти некоторые полезные классы, такие как Interval, YearWeek, YearQuarter и more .

...