/** * Return date in specified format. * @param milliSeconds Date in milliseconds * @param dateFormat Date format * @return String representing date in specified format */ publicstatic String getDate(long milliSeconds, String dateFormat) { // Create a DateFormatter object for displaying date in specified format. SimpleDateFormatformatter=newSimpleDateFormat(dateFormat);
// Create a calendar object that will convert the date and time value in milliseconds to date. Calendarcalendar= Calendar.getInstance(); calendar.setTimeInMillis(milliSeconds); return formatter.format(calendar.getTime()); } }
Ответ 2
Преобразуйте миллисекундное значение в Date экземпляр и передайте его выбранному форматировщику.
Instant.ofEpochMilli( myMillisSinceEpoch ) // Convert count-of-milliseconds-since-epoch into a date-time in UTC (`Instant`). .atZone( ZoneId.of( "Africa/Tunis" ) ) // Adjust into the wall-clock time used by the people of a particular region (a time zone). Produces a `ZonedDateTime` object. .toLocalDate() // Extract the date-only value (a `LocalDate` object) from the `ZonedDateTime` object, without time-of-day and without time zone. .format( // Generate a string to textually represent the date value. DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) // Specify a formatting pattern. Tip: Consider using `DateTimeFormatter.ofLocalized…` instead to soft-code the formatting pattern. ) // Returns a `String` object.
java.time
Современный подход использует классы java.time, которые вытесняют старые устаревшие классы даты и времени, используемые во всех других ответах.
Предполагая, что у вас есть long количество миллисекунд с момента отсчета эпохи в первый момент 1970 года по UTC, 1970-01-01T00:00:00Z…
Для получения даты требуется часовой пояс. Для любого данного момента дата варьируется по всему миру в зависимости от зоны.
ZoneIdz= ZoneId.of( "Pacific/Auckland" ) ; ZonedDateTimezdt= instant.atZone( z ) ; // Same moment, different wall-clock time.
Извлеките значение только для даты.
LocalDateld= zdt.toLocalDate() ;
Сгенерируйте строку, представляющую это значение, используя стандартный формат ISO 8601.
Stringoutput= ld.toString() ;
Сгенерируйте строку в пользовательском формате.
DateTimeFormatterf= DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) ; Stringoutput= ld.format( f ) ;
Совет: Подумайте о том, чтобы позволить java.time автоматически локализовать для вас, а не жестко кодировать шаблон форматирования. Используйте DateTimeFormatter.ofLocalized… методы.
Вы можете обмениваться объектами java.time непосредственно со своей базой данных. Используйте драйвер JDBC, совместимый с JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в java.sql.* классах. Поддержка Hibernate 5 и JPA 2.2 java.time.