Как получить текущую дату и время Вашего часового пояса в Java?

Второй подход позволяет компилятору произвести больше оптимизированного кода, потому что, когда адрес переменной передается функции, компилятор не может сохранить свое значение в регистре (регистрах) во время последующих вызовов к другим функциям. Код завершения обычно используется только однажды, сразу после вызова, тогда как "реальные" данные, возвращенные из вызова, могут использоваться чаще

49
задан Basil Bourque 27 October 2013 в 23:06
поделиться

5 ответов

Дата всегда на основе UTC ... или нейтрального часового пояса, в зависимости от того, как вы хотите ее просматривать. A Дата только представляет момент времени; он не зависит от часового пояса, всего несколько миллисекунд с эпохи Unix. Нет понятия «локальный экземпляр Date ». Используйте Дата вместе с Calendar и / или TimeZone.getDefault () , чтобы использовать «местный» часовой пояс. Используйте TimeZone.getTimeZone ("Europe / Madrid") , чтобы получить часовой пояс Мадрида.

... или используйте Joda Time , что позволяет сделать все более понятным, ИМО. В Joda Time вы должны использовать значение DateTime , которое представляет собой момент времени в определенной календарной системе и часовом поясе .

В Java 8 вы должны использовать ] java.time.ZonedDateTime , который является эквивалентом Java 8 для Joda Time DateTime .

или используйте Joda Time , который, как правило, все проясняет, ИМО. В Joda Time вы должны использовать значение DateTime , которое представляет собой момент времени в определенной календарной системе и часовом поясе .

В Java 8 вы должны использовать ] java.time.ZonedDateTime , который является эквивалентом Java 8 для Joda Time DateTime .

или используйте Joda Time , который, как правило, все проясняет, ИМО. В Joda Time вы должны использовать значение DateTime , которое представляет собой момент времени в определенной календарной системе и часовом поясе .

В Java 8 вы должны использовать ] java.time.ZonedDateTime , который является эквивалентом Java 8 для Joda Time DateTime .

89
ответ дан 7 November 2019 в 11:15
поделиться

Как уже сказал Джон Скит, java.util.Date не имеет часового пояса. Объект Date представляет количество миллисекунд с 1 января 1970 г., 12:00 AM, UTC. Он не содержит информации о часовом поясе.

Когда вы форматируете объект Date в строку, например, используя SimpleDateFormat , вы можете установить часовой пояс для объекта DateFormat чтобы сообщить ему, в каком часовом поясе вы хотите отображать дату и время:

Date date = new Date();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

// Use Madrid's time zone to format the date in
df.setTimeZone(TimeZone.getTimeZone("Europe/Madrid"));

System.out.println("Date and time in Madrid: " + df.format(date));

Если вы хотите указать местный часовой пояс компьютера, на котором работает ваша программа, используйте:

df.setTimeZone(TimeZone.getDefault());
52
ответ дан 7 November 2019 в 11:15
поделиться

с использованием Календарь прост:

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("Europe/Madrid"));
Date currentDate = calendar.getTime();
16
ответ дан 7 November 2019 в 11:15
поделиться

Вы должны использовать JodaTime для этого. Java.util.Date очень ограничен в отношении TimeZone.

2
ответ дан 7 November 2019 в 11:15
поделиться

Вот пример:

Calendar c = Calendar.getInstance(TimeZone.getDefault());
Date date = c.getTime();
0
ответ дан 7 November 2019 в 11:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: