mmlooloo
mmlooloo

Reputation: 18977

Java timestamp, can not get correct value

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

Answers (2)

Basil Bourque
Basil Bourque

Reputation: 340040

java.time

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

M A
M A

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

Related Questions