@kidmenot:感谢您的链接,但该解决方案需要在 java 端“手动”处理 javascript-date 并更改 Javascript 端。所以最后我们只需要更改 javascript-part。有
var myDate = new Date():
// ... many LOCs
var myDateString = "" + myDate + "";
分散在 js 代码中。所以只需将其更改为
var myDate = new Date():
// ... many LOCs
var myDateString = myDate;
解决了这个问题,因为后来是
JSON.stringify()
就在将其发送到服务器之前。JSON.stringify ()调用myDate.toJSON()返回一个 ISO-8601 日期字符串,由 Jersey 处理,无需任何进一步的编码。
所以我们选择了这个解决方案来避免未来的并发症。
半年后编辑:
这个解析问题经常发生,最终由于一些 js 框架而不可避免。以下是我们的 Java 解决方案:
public static Date jsDateStringToJavaDate(String jsDateString) throws ParseException{
String[] arrStrDateParts = jsDateString.split(" ");
SimpleDateFormat sdf = new SimpleDateFormat("E MMM dd yyyy HH:mm:ss", Locale.ENGLISH);
sdf.setTimeZone(TimeZone.getTimeZone(arrStrDateParts[5].substring(0,6)+":"+arrStrDateParts[5].substring(6)));
return sdf.parse(arrStrDateParts[0]+" "+arrStrDateParts[1]+" "+arrStrDateParts[2]+" "+arrStrDateParts[3]+" "+arrStrDateParts[4]);
}
如果您有更好的解决方案,请在此处发布。谢谢