Reputation: 18977
I want to convert this 1416990366
timestamp to date. here is how I do:
Timestamp stamp = new Timestamp(1416990366);
System.out.println("TimeStamp: " + stamp.toString());
Date mDate = new Date(stamp.getTime());
but I get Sat Jan 17 13:06:30 GMT+03:30 1970
while it must be Wed, 26 Nov 2014 08:26:06 GMT
what is wrong?
Edit:
I get this value from server and I think they cut off miliseconds so i have to multiply it by 1000 but I get nothing, and again the wrong value.
why this still dose not work Timestamp stamp = new Timestamp(1000 * mIssue.getReleaseTime());
where mIssue.getReleaseTime() = 1416990366
can anyone help?
Upvotes: 1
Views: 677
Reputation: 340040
The modern way is with java.time classes.
Instant instant = Instant.ofEpochSecond( 1416990366L );
Call toString
to generate a String that represents its date-time value in standard ISO 8601 format.
2014-11-26T08:26:06Z
An Instant
is a moment on the timeline in UTC with a resolution of nanoseconds.
Much of the java.time functionality is back-ported to Java 6 & 7 in ThreeTen-Backport and further adapted to Android in ThreeTenABP (see How to use…).
Upvotes: 1
Reputation: 72884
The time specified to the Timestamp
constructor is the time in milliseconds since January 1, 1970, 00:00:00 GMT. 1416990366
evaluates to around 16 days from that epoch, hence the output that you're getting.
If you want the current time, you can pass System.currentTimeMillis()
to the constructor.
EDIT:
Since the time that is obtained from the server is in milliseconds, you can multiply by 1000 and convert to long
as follows:
Timestamp stamp = new Timestamp((long) 1000 * mIssue.getReleaseTime());
Upvotes: 2