Вот современный ответ (действует с 2014 года и далее).Принятый ответ был очень хорошим ответом в 2011 году. В эти дни я рекомендую, чтобы никто не использовал классы Date
, DateFormat
и SimpleDateFormat
.Все это становится более естественным с современным API даты и времени Java.
Чтобы получить объект даты и времени из вашего millis:
ZonedDateTime dateTime = Instant.ofEpochMilli(millis)
.atZone(ZoneId.of("Australia/Sydney"));
Если millis
равно 1318388699000L
, этодает вам 2011-10-12T14:04:59+11:00[Australia/Sydney]
.Если код каким-то странным образом окажется на JVM, которая не знает часового пояса Австралии / Сиднея, вы можете быть уверены, что получите уведомление через исключение.
Если вы хотите, чтобы в вашей строке была дата-времяформат для представления:
String formatted = dateTime.format(DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss"));
Результат:
12/10/2011 14:04:59
PS Я не знаю, что вы подразумеваете под «вышеописанным не работает». На моем компьютере ваш код вВопрос тоже печатает 12/10/2011 14:04:59
.