Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解析此日期_Java_Date - Fatal编程技术网

Java 如何解析此日期

Java 如何解析此日期,java,date,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 thi

我不太明白解析这个日期的格式应该是什么。它是一个毫秒值,后跟时区。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);

SimpleDataFormat期望毫秒值<1000,因为它期望对于较大的值,可以先增加秒,然后增加分钟,等等


您需要首先转换该值;这篇文章可能会有所帮助:

您可以不用解析器来完成它

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"));