Date.getTime() returns milliseconds since Jan 1, 1970. Unixtime is seconds since Jan 1, 1970. I don't usually code in java, but I'm working on some bug fixes. I have:
Date now = new Date(); Long longTime = new Long(now.getTime()/1000); return longTime.intValue();
Is there a better way to get unixtime in java?
UPDATE
Based on John M's suggestion, I ended up with:
return (int) (System.currentTimeMillis() / 1000L);
Avoid the Date object creation w/ System.currentTimeMillis(). A divide by 1000 gets you to Unix epoch.
As mentioned in a comment, you typically want a primitive long (lower-case-l long) not a boxed object long (capital-L Long) for the unixTime variable's type.
long unixTime = System.currentTimeMillis() / 1000L;
Java 8 added a new API for working with dates and times. With Java 8 you can use
long unixTimestamp = Instant.now().getEpochSecond();
Instant.now()
returns an Instant that represents the current system time. With getEpochSecond()
you get the epoch seconds (unix time) from the Instant
.