java.time
Старые классы даты и времени плохо разработаны, сбивают с толку и создают проблемы.Избегайте их.
Используйте современные классы: фреймворк java.time , встроенный в Java 8 и более поздние версии.Найдите обратные порты для более ранних версий Java 6 & 7 и для Android .
Instant
- это момент на временной шкале в UTC .
Instant now = Instant.now();
Применить часовой пояс (ZoneId
), чтобы получить ZonedDateTime
.
Никогда не используйте 3-4-буквенные аббревиатуры зоны, такие как EST
или IST
.Они не стандартизированы и не уникальны (!).Используйте правильные имена часовых поясов , построенные в формате continent/region
, например Asia/Kolkata
, Pacific/Auckland
, America/Los_Angeles
.
ZoneId zoneId_Montreal = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt_Montreal = ZonedDateTime.ofInstant( instant , zoneId_Montreal );
Применение другого часового пояса для создания другого ZonedDateTime
, настроенного на этот часовой пояс.Позвоните withZoneSameInstant
.
ZoneId zoneId_Paris = ZoneId.of( "Europe/Paris" ); // Or "Asia/Kolkata", etc.
ZonedDateTime zdt_Paris = zdt_Montreal.withZoneSameInstant( zoneId_Paris );
Если вы хотите вернуться к UTC , попросите Instant
.
Instant instant = zdt_Paris.toInstant();