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().
-
long timestamp = Long.parseLong(date) Date expiry = new Date(timestamp)
-
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);
-
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)
-
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/
-
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.
0 comments:
Post a Comment