Текущее время Java на 2 часа опережает время моей системы

Я использую следующий код Java, чтобы получить текущую дату и время:

DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
DateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date));
System.out.println(timeFormat.format(date));

Выходное время всегда на 2 часа опережает системное время или часовой пояс. Например, если приведенный выше код выводит следующее время:
11:44:43
Тогда время моей системы:
09:44:43

Пожалуйста, помогите мне решить эту проблему!

2 ответа

Попробуй это:

DateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
TimeZone tz = TimeZone.getDefault();
Calendar c = Calendar.getInstance(tz);
Date date = c.getTime();
System.out.println(timeFormat.format(date));

Если это не работает, попробуйте изменить часовой пояс. Взгляни на TimeZone.getTimeZone(String id),

Ваша проблема - часовой пояс

для опыта

этот код для андроида.

изменить часовой пояс приложения.

потому что Android часовой пояс по умолчанию "UTC"

SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
Другие вопросы по тегам