Posso convertire un timestamp unix in un Date()
oggetto inserendo il long
valore nel Date()
costruttore. Ad esempio: potrei averlo come new Date(1318762128031)
.
Ma dopo di che, come posso recuperare il timestamp unix Date()
dall'oggetto?
Posso convertire un timestamp unix in un Date()
oggetto inserendo il long
valore nel Date()
costruttore. Ad esempio: potrei averlo come new Date(1318762128031)
.
Ma dopo di che, come posso recuperare il timestamp unix Date()
dall'oggetto?
Risposte:
getTime()
recupera i millisecondi dal 1 gennaio 1970 GMT passato al costruttore. Non dovrebbe essere troppo difficile ottenere il tempo di Unix (lo stesso, ma in secondi) da quello.
getTime() = unixTimestamp * 1000
), getTime()
restituirebbe sempre tre zeri alla fine, ma in realtà può restituire qualsiasi cosa dalla fine con 000
a 999
, il che significa che ha un valore più alto precisione dovuta a millisecondi e non è solo "* 1000". Significato: il confronto di un vero unixTimestamp * 1000 con il getTime()
risultato avrebbe successo solo nello ~ 0,1% dei casi.
Per ottenere un timestamp
da Date()
, dovrai dividere getTime()
per 1000
, ad esempio:
Date currentDate = new Date();
currentDate.getTime() / 1000;
// 1397132691
o semplicemente:
long unixTime = System.currentTimeMillis() / 1000L;
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;
}
}
In java 8, è conveniente utilizzare la nuova libreria data e il getEpochSecond
metodo per ottenere il timestamp (è in secondo)
Instant.now().getEpochSecond();
Instant
invece di Instant.now()
. O yourDesiredJavaUtilDate.toInstant()
se hai ottenuto un vecchio stile Date
da un'API legacy.