Cómo puedo convertir minutos de sello de tiempo unix a fecha y hora en java. Por ejemplo, la marca de tiempo 1372339860
corresponde a Thu, 27 Jun 2013 13:31:00 GMT
.
Quiero convertir 1372339860
a 2013-06-27 13:31:00 GMT
.
Editar : En realidad quiero que sea de acuerdo a EE.UU. temporización GMT-4, por lo que será 2013-06-27 09:31:00
.
Puede utilizar SimlpeDateFormat para formatear su fecha de la siguiente manera:
long unixSeconds = 1372339860;
// convert seconds to milliseconds
Date date = new java.util.Date(unixSeconds*1000L);
// the format of your date
SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
// give a timezone reference for formatting (see comment at the bottom)
sdf.setTimeZone(java.util.TimeZone.getTimeZone("GMT-4"));
String formattedDate = sdf.format(date);
System.out.println(formattedDate);
El patrón que toma SimpleDateFormat
es muy flexible, puedes comprobar en los javadocs todas las variaciones que puedes usar para producir diferentes formatos basados en los patrones que escribas dada una Date
específica. http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
Date
proporciona un método getTime()
que devuelve los milisegundos desde EPOC, es necesario que le des a SimpleDateFormat
una zona horaria para formatear la fecha correctamente de acuerdo a tu zona horaria, de lo contrario utilizará la zona horaria por defecto de la JVM (que si está bien configurada será de todos modos correcta).Java 8 introduce el método de utilidad Instant.ofEpochSecond
para crear un Instant
a partir de una marca de tiempo Unix, que luego puede convertirse en una ZonedDateTime
y finalmente formatearse, por ejemplo:
final DateTimeFormatter formatter =
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
final long unixTime = 1372339860;
final String formattedDtm = Instant.ofEpochSecond(unixTime)
.atZone(ZoneId.of("GMT-4"))
.format(formatter);
System.out.println(formattedDtm); // => '2013-06-27 09:31:00'
Pensé que esto podría ser útil para las personas que utilizan Java 8.