When trying to convert a Unix timstamp, from a database, to a String in a date format.
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
The timestamp is for: Sat, 25 Aug 2012
. I have no idea why 1970 is always the output so hopefully someone can see a stupid mistake I'm making.
Unix time is in seconds, Java time is milliseconds
You'll need to multiple it by 1000
DateTime _startDate = new DateTime(_sLong * 1000L);
You may want to check this answer out
Unix time stamp is a number of SECONDS since 1970-01-01 00:00:00
.
DateTime(long instant)
constructor needs number of MILLISECONDS.
long _startTS = ((long) evtResult.getInt( "start" )) * 1000; DateTime _startDate = new DateTime( _startTS );
EDIT: or use getLong(..) method on your evtResult
to avoid the cast to long.
When you do this: _startTS*1000
, Java assumes you want an int because _startTS
is an int (that's why the value is 1542436352). Try casting it as a long first:
Long _sLong = new Long(((long)_startTS)*1000);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With