如何解析这个日期

时间:2011-06-08 15:37:29

标签: java date

我无法弄清楚解析这个日期应该是什么格式。它是一个毫秒值,后跟时区。 THX。

// so far tried:   "S Z"
//                "SSSSSSSSSSS-ZZZZ",
//                "SSSSSSSSSSS-Z",
// etc.

Format formatter = new SimpleDateFormat("SSSSSSSSSSSS Z", Locale.CANADA);

// source string looks like this /Date(928164000000-0400)/
String temp = jsonUserObj.getString("DateOfBirth").substring(6, 6+17);
System.err.println("got date="+temp);
Date date = (Date) formatter.parseObject(temp);

2 个答案:

答案 0 :(得分:1)

你可以在没有解析器的情况下完成。

String[] parts = new String[]{temp.substring(0, temp.indexOf('-')), temp.substring(temp.indexOf('-') + 1)};
long millis = Long.parseLong(parts[0]);
parts[1] = parts[1].replaceAll("^0*(\\-?[0-9]*)$", "$1");
int timeZone = Integer.parseInt(parts[1]);

int rawOffset = (timeZone / 100) * 3600000 + (timeZone % 100);

GregorianCalendar cal = new GregorianCalendar();
cal.setTimeInMillis(millis);
cal.setTimeZone(new SimpleTimeZone(rawOffset, "GMT"));

答案 1 :(得分:0)

SimpleDateFormat需要一个毫秒的值< 1000,因为它预计你会增加秒,然后是分钟等,以获得更大的值。

您需要先转换价值;这篇文章可能有所帮助:Unix epoch time to Java Date object