I’ve written a method that returns the milisecond value of a string formatted date, and for some reason it’s giving me dates 39000 years in the future. any ideas why?
private long getTimeInMs(String currentStartTimeString) {
//String newDateString = currentStartTimeString.substring(6,10)+"-"+currentStartTimeString.substring(3, 5)+"-"+currentStartTimeString.substring(0, 2)+ "T" + currentStartTimeString.substring(11);
String newDateString = currentStartTimeString.substring(0,19);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long timeInMs;
try {
timeInMs = df.parse(newDateString).getTime();
} catch (ParseException e) {
log.error("Failed to parse current Start Time",e);
return 0;
}
return timeInMs;
}
If I enter the date string “2009-07-07 10:51:01.15” it returns 1246960261000 which is actually Wed Aug 06 41484 11:16:40 GMT+0100 (GMT Daylight Time)
Okay I think the issue is that it’s giving ms past the Java epoc and I’m evaluating it against the unix epoch…
I’m guessing that you interpreted the returned value from getTime() as if it was a Unix time_t value. It’s not – it’s milliseconds past the Java epoch, not seconds past the Unix epoch.