Instant.ofEpochSecond( 1_280_512_800L )
2010-07-30T18: 00: 00Z
blockquote>java.time
новая инфраструктура java.time, встроенная в Java 8, а затем является преемником Joda-Time.
Эти новые классы включают удобный заводский метод для преобразования количества целых секунд с эпохи. Вы получаете
Instant
, момент на шкале времени в UTC с разрешением до наносекунд.Instant instant = Instant.ofEpochSecond( 1_280_512_800L );
instant.toString (): 2010-07-30T18: 00: 00Z
blockquote>Посмотрите, что запускается в реальном времени на IdeOne.com .
Asia/Kabul
илиAsia/Tehran
часовых поясах?Вы сообщили о том, чтобы получить значение в дневное время 22:30 вместо 18:00 здесь. Я подозреваю, что ваша утилита PHP неявно применяет часовой пояс по умолчанию для настройки с UTC. Мое значение здесь UTC, обозначенное
Z
(сокращение отZulu
, означает UTC). Любая вероятность того, что ваша ОС или PHP установлена наAsia/Kabul
илиAsia/Tehran
часовые пояса? Я полагаю, что вы сообщаетеIRST
в своем выпуске, что, по-видимому, означает время в Иране. В настоящее время в 2017 году это единственные зоны , работающие с летним временем, которое составляет четыре с половиной часа перед UTC.Укажите правильное имя часового пояса в формате
continent/region
, напримерAmerica/Montreal
,Africa/Casablanca
илиPacific/Auckland
. Никогда не используйте аббревиатуру 3-4 буквы, напримерEST
илиIST
илиIRST
, поскольку они не истинные часовые пояса, не стандартизированы и даже не уникальны (!).Если вы хотите видеть ваш момент через объектив часового пояса конкретного региона, примените
ZoneId
, чтобы получитьZonedDateTime
. Тем не менее тот же одновременный момент, но рассматривается как другое время настенных часов .ZoneId z = ZoneId.of( "Asia/Tehran" ) ; ZonedDateTime zdt = instant.atZone( z ); // Same moment, same point on timeline, but seen as different wall-clock time.
2010-07-30T22: 30 + 04: 30 [Азия / Тегеран]
blockquote>Преобразование из java.time в устаревшие классы
Вы должны придерживаться новых классов java.time.
java.util.Date date = java.util.Date.from( instant );
Joda-Time
UPDATE: проект Joda-Time теперь находится в сервисе mode , при этом команда советует перейти на классы java.time .
FYI, конструктор для Joda-Time DateTime подобен: умножьте на тысячу, чтобы создать
long
(а неint
!).DateTime dateTime = new DateTime( ( 1_280_512_800L * 1000_L ), DateTimeZone.forID( "Europe/Paris" ) );
Лучше избегать печально известных проблемных классов java.util.Date и .Calendar. Но если вы должны использовать дату, вы можете конвертировать из Joda-Time.
java.util.Date date = dateTime.toDate();
О java.time
java.time framework встроен в Java 8 и более поздние версии. Эти классы вытесняют неприятные старые классы времени legacy , такие как
java.util.Date
,Calendar
и & amp;SimpleDateFormat
.Проект Joda-Time , теперь в режиме обслуживания , советует перейти на java.time .
Чтобы узнать больше, см. учебное пособие Oracle . И поиск Stack Overflow для многих примеров и объяснений. Спецификация JSR 310 .
Вы можете обменивать объекты java.time непосредственно с вашей базой данных. Используйте драйвер JDBC , соответствующий JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в классах
java.sql.*
.Где получить классы java.time?
- Java SE 8 , Java SE 9 и более поздние версии. Часть стандартного Java API с интегрированной реализацией. Java 9 добавляет некоторые незначительные функции и исправления.
- Java SE 6 и Java SE 7 Большая часть функций java.time портирована на Java 6 & amp; 7 в ThreeTen-Backport .
- Android Более поздние версии реализаций пакетов Android классов java.time. Для более ранних Android (& lt; 26) проект ThreeTenABP адаптирует ThreeTen-Backport (упомянутый выше). См. Как использовать ThreeTenABP ... .
Проект ThreeTen-Extra расширяет java.time с дополнительными классами. Этот проект является доказательством возможных будущих дополнений к java.time. Здесь вы можете найти полезные классы, такие как
Interval
,YearWeek
,YearQuarter
и more .