Puedo convertir una marca de tiempo de Unix en un Date()
objeto poniendo el long
valor en el Date()
constructor. Por ejemplo: podría tenerlo como new Date(1318762128031)
.
Pero después de eso, ¿cómo puedo recuperar la marca de tiempo de Unix del Date()
objeto?
Respuestas:
getTime()
recupera los milisegundos desde que el 1 de enero de 1970 GMT pasó al constructor. No debería ser demasiado difícil obtener el tiempo Unix (el mismo, pero en segundos) a partir de eso.fuente
getTime() = unixTimestamp * 1000
),getTime()
siempre devolvería tres ceros al final, pero de hecho puede devolver cualquier cosa desde que termine con000
hasta999
, lo que significa que tiene una mayor precisión debido a milisegundos y no es solo "* 1000". Significado: comparar un unixTimestamp * 1000 real con elgetTime()
resultado solo tendría éxito en ~ 0.1% de los casos.Para obtener un
timestamp
deDate()
, deberá dividirgetTime()
por1000
, es decir:Date currentDate = new Date(); currentDate.getTime() / 1000; // 1397132691
o simplemente:
long unixTime = System.currentTimeMillis() / 1000L;
fuente
new Date().getTime()
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.TimeZone; public class Timeconversion { private DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmm", Locale.ENGLISH); //Specify your locale public long timeConversion(String time) { long unixTime = 0; dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+5:30")); //Specify your timezone try { unixTime = dateFormat.parse(time).getTime(); unixTime = unixTime / 1000; } catch (ParseException e) { e.printStackTrace(); } return unixTime; } }
fuente
En java 8, es conveniente usar la nueva biblioteca de fecha y el
getEpochSecond
método para obtener la marca de tiempo (está en segundo lugar)Instant.now().getEpochSecond();
fuente
Instant
lugar deInstant.now()
. OyourDesiredJavaUtilDate.toInstant()
si tiene unaDate
API antigua .No sé si desea lograr eso en js o java, en js la forma más sencilla de obtener la marca de tiempo de Unix (este es el tiempo en segundos desde el 1/1/1970) es la siguiente:
var myDate = new Date(); console.log(+myDate); // +myDateObject give you the unix from that date
fuente
Usa
SimpleDateFormat
clase. Eche un vistazo a su javadoc: explica cómo usar conmutadores de formato.fuente