Как получить текущую метку времени с TimeZone в Java - PullRequest
0 голосов
/ 28 февраля 2019

Я хочу получить timeStamp с учетом TimeZone в Java в Android, я пробовал много способов, но все еще не могу найти решение.

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Вы можете использовать Calendar.getInstance (). GetTimeInMillis ()?По умолчанию используется часовой пояс устройства или, если вы хотите изменить часовой пояс, вы можете сделать что-то вроде следующего:

Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
calendar.getTimeInMillis();

0 голосов
/ 28 февраля 2019

tl; dr

Используйте классы ZoneId & ZonedDateTime, найденные в пакете java.time .

ZonedDateTime.now()  // Implicitly applies the JVM’s current default time zone.

Лучше указать желаемое/ явно ожидаемый часовой пояс.

ZonedDateTime.now(
    ZoneId.of( "Africa/Tunis" ) 
)

java.time

Современный подход использует классы java.time , которые годы назад вытеснили ужасные классы наследия, такие как Timestamp, Calendar, Date, TimeZone и SimpleDateFormat.

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

ZoneId z = ZoneId.of( "America/Montreal" ) ;  

Запечатлеть текущий момент, который виден через часы настенного времени, используемые людьми определенного региона, указанного часового пояса.

ZonedDateTime zdt = ZonedDateTime.now( z ) ;

table of legacy and modern classes for date-time handling in Java


О java.time

Фреймворк java.time встроен в Java8 и позже.Эти классы заменяют проблемные старые устаревшие классы даты и времени, такие как java.util.Date, Calendar и & SimpleDateFormat.

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

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

Вы можете обмениваться java.time объектами напрямую с вашей базой данных.Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии.Нет необходимости в строках, нет необходимости в java.sql.* классах.

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

  • Java SE 8 , Java SE 9 , Java SE 10, Java SE 11 и более поздние версии - часть стандартного Java API с связанной реализацией.
    • Java 9 добавляет некоторые незначительные функции и исправления.
  • Java SE 6 и JavaSE 7
    • Большинство функций java.time перенесено в Java 6 & 7 в ThreeTen-Backport .
  • Android
    • Более поздние версии реализации связки Android java.time классы.
    • Для более ранних версий Android (<26) проект <a href="https://github.com/JakeWharton/ThreeTenABP" rel="nofollow noreferrer"> ThreeTenABP адаптируется ThreeTen-Backport (упомянуто выше).См. Как использовать ThreeTenABP… .
0 голосов
/ 28 февраля 2019

Вы можете использовать класс Calendar, чтобы получить текущую метку времени.Затем вы можете отформатировать эту временную метку для отображения даты, дня, месяца, года, времени и т. Д.

Calendar c = Calendar.getInstance(); 

Проверьте эту ссылку: Класс календаря в Java с примерами (GeeksForGeeks)

...