Lorsque vous essayez de convertir un horodatage Unix, à partir d'une base de données, en une chaîne au format date.
int _startTS = evtResult.getInt("start"); //outputs 1345867200
Long _sLong = new Long(_startTS); //outputs 1345867200
//I've also tried: Long _sLong = new Long(_startTS*1000); //outputs 1542436352
DateTime _startDate = new DateTime(_sLong); //outputs 1970-01-16T08:51:07.200-05:00
L'horodatage est pour: Sat, 25 Aug 2012
. Je ne sais pas pourquoi 1970 est toujours la sortie, donc j'espère que quelqu'un peut voir une erreur stupide que je fais.
Le temps Unix est en secondes, Java le temps est en millisecondes
Vous devrez le multiplier par 1000
DateTime _startDate = new DateTime(_sLong * 1000L);
Vous voudrez peut-être vérifier cela réponse out
L'horodatage Unix est un nombre de SECONDES depuis 1970-01-01 00:00:00
.
DateTime(long instant)
le constructeur a besoin d'un nombre de MILLISECONDES .
long _startTS = ((long) evtResult.getInt( "start" )) * 1000;
DateTime _startDate = new DateTime( _startTS );
EDIT: ou utilisez la méthode getLong (..) sur votre evtResult
pour éviter un cast trop long.
Lorsque vous procédez ainsi: _startTS*1000
, Java suppose que vous voulez un int car _startTS
est un entier (c'est pourquoi la valeur est 1542436352). Essayez de le lancer aussi longtemps:
Long _sLong = new Long(((long)_startTS)*1000);