我正在学习Java并编写一个Android应用程序,它使用服务器传递的JSON对象。
除了约会之外,我都在工作。
我得到其中一个
'SomeKey':'\/Date(1263798000000)\/'
我正在使用org.json.JSONObject
。
如何将SomeKey
转换为java.Util.Date
?
答案 0 :(得分:14)
这可能会有所帮助:
public static Date JsonDateToDate(String jsonDate)
{
// "/Date(1321867151710)/"
int idx1 = jsonDate.indexOf("(");
int idx2 = jsonDate.indexOf(")");
String s = jsonDate.substring(idx1+1, idx2);
long l = Long.valueOf(s);
return new Date(l);
}
答案 1 :(得分:8)
日期格式在JSON中不是标准格式,因此您需要选择“如何通过”。我认为您所看到的价值是以毫克为单位。
在Java中:
System.out.println (new Date(1263798000000L));
// prints: Mon Jan 18 09:00:00 IST 2010
当然,这是我的时区,但无论如何,这是一个相当近的日期。
来自Date构造函数的javadoc:
参数:
date - 自1970年1月1日00:00:00 GMT以来的毫秒数。
此处链接到文档 - > http://java.sun.com/javase/6/docs/api/java/util/Date.html#Date%28long%29
答案 2 :(得分:2)
正如Yoni已经提到的,JSON没有定义日期是什么,或者如何序列化日期。看看你发布的JSON片段,看起来好像有人觉得有点过于创意,序列化这样的日期。
这里需要注意的重要事项是:对于任何JSON解析器,这只是一个字符串。 “日期(12345)”部分毫无意义。你必须自己解析为java.util.Date
,在这种情况下,意味着剥离任何不是数字的东西,并使用数字(UNIX时间)来实例化java.util.Date
。
仅供记录。使用JSON传递日期的典型方法是
{'timestamp':1265231402}
或更可能
{'timestamp':'Wed, 03 Feb 2010 22:10:38 +0100'}
后一个例子是使用标准RFC-2822格式的当前时间戳(正如我写的那样),可以使用Java的日期实用程序轻松解析。有关如何在Java中解析日期,请查看SimpleDateFormat。
答案 3 :(得分:0)
public String FormartDate(String date) {
Calendar calendar = Calendar.getInstance();
String datereip = date.replace("/Date(", "").replace(")/", "");
Long timeInMillis = Long.valueOf(datereip);
calendar.setTimeInMillis(timeInMillis);
String DateFmtI;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy");
DateFmtI = simpleDateFormat.format(calendar.getTime());
return DateFmtI;
}