Posso convertire un timestamp unix in un Date()oggetto inserendo il longvalore 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 longvalore 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 000a 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 timestampda 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 getEpochSecondmetodo per ottenere il timestamp (è in secondo)
Instant.now().getEpochSecond();
Instantinvece di Instant.now(). O yourDesiredJavaUtilDate.toInstant()se hai ottenuto un vecchio stile Dateda un'API legacy.