tags:

views:

4669

answers:

5

I have a string containing the UNIX Epoch time, and I need to convert it to a Java Date Object.

String date = "1081157732";
DateFormat df = new SimpleDateFormat(""); // This line
try {
    Date expiry = df.parse(date);
} catch ( ParseException ex ) {
    ex.getStackTrace();
}

The marked line is where I'm having trouble. I can't work out what the argument to SimpleDateFormat() should be, or even if I should be using SimpleDateFormat().

A: 
long timestamp = Long.parseLong(date)
Date expiry = new Date(timestamp)
tcurdt
+7  A: 

How about just:

Date expiry = new Date(Long.parseLong(date));

EDIT: as per rde6173's answer and taking a closer look at the input specified in the question , "1081157732" appears to be a seconds-based epoch value so you'd want to multiply the long from parseLong() by 1000 to convert to milliseconds, which is what Java's Date constructor uses, so:

Date expiry = new Date(Long.parseLong(date) * 1000);
Marc Novakowski
A: 

Hum.... if I am not mistaken, the UNIX Epoch time is actually the same thing as

System.currentTimeMillis()

So writing

try {
    Date expiry = new Date(Long.parseLong(date));
}
catch(NumberFormatException e) {
    // ...
}

should work (and be much faster that date parsing)

Varkhan
+3  A: 

Epoch is the number of seconds since Jan 1, 1970..

So:

String epochString = "1081157732";
long epoch = Long.parseLong( epochString );
Date expiry = new Date( epoch * 1000 );

For more information: http://www.epochconverter.com/

Ryan Emerle
A: 

Better yet, use JodaTime. Much easier to parse strings and into strings. Is thread safe as well. Worth the time it will take you to implement it.

WolfmanDragon