我收到一个包含日期值的json数据,如下所示
{"EndDate":"\/Date(1446912155713+0300)\/","CreatedOn":"\/Date(1446908555777+0300)\/","user":"user1"}
我使用EndDate日期减去CreatedOn日期以获得分钟数。在做减法之前,我正在转换像这样的日期。
System.out.println(convertDate("1446912155713+0300", "hh:mm:ss"));
public static String convertDate(String dateInMilliseconds,String dateFormat) {
return DateFormat.format(dateFormat, Long.parseLong(dateInMilliseconds)).toString();
}
我得到以下错误。
Caused by: java.lang.NumberFormatException: Invalid long: "1446908555777+0300"
这是我从json收到的格式,如上所示:"\/Date(1446912155713+0300)\/"
答案 0 :(得分:1)
由于毫秒的长度至少在接下来的3个世纪内保持不变,因此您可以在String
之后的毫秒内执行以下操作。
String date = "1446908555777+0300";
date = date.substring(0, 12); //0 => start; 12=>last index of valid millisecond
System.out.println(convertDate(date, "hh:mm:ss"));
public static String convertDate(String dateInMilliseconds,String dateFormat) {
return DateFormat.format(dateFormat, Long.parseLong(dateInMilliseconds)).toString();
}
答案 1 :(得分:1)
您遇到的问题是您收到的JSON不是有效的Long
值。
您的方法convertDate
需要Long
作为它的第一个参数,并允许将String
传递给它,但是在方法体中使用它:
Long.parseLong(dateInMilliseconds)
如果String
中包含“+”,则无法将Long
解析为String
。这不是数值(它是一个运算符)。
首先需要将Long
值“Date(1446912155713 + 0300)”转换为有效的Long
格式。特别是,在尝试将其转换为{{1}}之前,您需要删除“+0300”或以某种有意义的方式使用它。已经发布的答案假定这是一个时区调整。