在android上将Unix时间解析为java

在android上将Unix时间解析为java,java,android,json,parsing,time,Java,Android,Json,Parsing,Time,你好。我正在开发一个小应用程序,目前我正在尝试从JSON对象(在CouchDB上)解析一个Unix时间。我试过几种方法,但我认为这一种最接近。现在我得到NumberFormatException:Invalid long:“Time”错误 这可能是一些愚蠢的错误,我只是没有看到,因为缺乏经验,所以任何建议或指导将不胜感激。是的,我试过阅读javadocs,但找不到解决方案。 谢谢。行Long-time=Long.parseLong(dateKey) 正在尝试将字符串时间解析为长。 我想你想做的就

你好。我正在开发一个小应用程序,目前我正在尝试从JSON对象(在CouchDB上)解析一个Unix时间。我试过几种方法,但我认为这一种最接近。现在我得到NumberFormatException:Invalid long:“Time”错误

这可能是一些愚蠢的错误,我只是没有看到,因为缺乏经验,所以任何建议或指导将不胜感激。是的,我试过阅读javadocs,但找不到解决方案。
谢谢。

Long-time=Long.parseLong(dateKey)

正在尝试将
字符串
时间解析为
。 我想你想做的就是这样

String timeString = array.getJSONObject(0).getString(dateKey);
Long time = Long.parseLong(timeString)

编辑:重新阅读您的代码,我认为问题在于您试图过早解析您的日期

您需要移动行
Long time=Long.parseLong(dateKey)向下进入JSON解析循环


然后,代替
longtime=Long.parseLong(dateKey)
,您应该解析日期,而不是日期,因此
Long.parseLong(日期)

Long-time=Long.parseLong(日期键)

正在尝试将
字符串
时间解析为
。 我想你想做的就是这样

String timeString = array.getJSONObject(0).getString(dateKey);
Long time = Long.parseLong(timeString)

编辑:重新阅读您的代码,我认为问题在于您试图过早解析您的日期

您需要移动行
Long time=Long.parseLong(dateKey)向下进入JSON解析循环


然后,代替
longtime=Long.parseLong(dateKey)
,您应该解析日期,而不是日期,因此
Long.parseLong(日期)

您可以创建一个新的
日期
对象,或一个新的
日期时间
对象(from-Java中操作日期的推荐方法),其构造函数以毫秒为单位,耗时很长/Unix时间

long time;
// ...
Date date = new Date(time);
DateTime jodaDate = new DateTime(time);
查看代码,可以完全删除解析代码。删除以下行:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //desired format

Long time = Long.parseLong(dateKey);
final Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(time *1000);
并在解析JSON“Data”对象的循环中替换这些对象:

String date = obj.getString(dateKey);
cp.dt = new Date(Long.parseLong(date));

result.add(cp);
您的“所需格式”是输出格式。可以通过以下方式设置日期输出字符串的格式:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //desired format
String formattedDate = df.format(date);

您可以创建一个新的
Date
对象,或一个新的
DateTime
对象(从-Java中操作日期的推荐方法),其构造函数以毫秒为单位,耗时很长/Unix时间

long time;
// ...
Date date = new Date(time);
DateTime jodaDate = new DateTime(time);
查看代码,可以完全删除解析代码。删除以下行:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //desired format

Long time = Long.parseLong(dateKey);
final Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(time *1000);
并在解析JSON“Data”对象的循环中替换这些对象:

String date = obj.getString(dateKey);
cp.dt = new Date(Long.parseLong(date));

result.add(cp);
您的“所需格式”是输出格式。可以通过以下方式设置日期输出字符串的格式:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //desired format
String formattedDate = df.format(date);


什么是JSON_地图?看起来你可能在试图解析你的JSON键,而不是值(请看Long time=Long.parseLong(dateKey);)这是一个hashMap,这是我声明的:static{JSON_MAP=new hashMap();JSON_MAP.put(MAP_OPEN,“OPEN”)//其余的JSON_MAP.put(MAP_DATE,“time”)},无论哪种方式,dateKey总是会保留“Time”的值,我相信这是您的问题,您试图将“Time”解析为Long:)我想我无法将其格式化为一个漂亮的注释way@panini但是它很长,不是吗?:)什么是JSON_地图?看起来你可能在试图解析你的JSON键,而不是值(请看Long time=Long.parseLong(dateKey);)这是一个hashMap,这是我声明的:static{JSON_MAP=new hashMap();JSON_MAP.put(MAP_OPEN,“OPEN”)//其余的JSON_MAP.put(MAP_DATE,“time”)},无论哪种方式,dateKey总是会保留“Time”的值,我相信这是您的问题,您试图将“Time”解析为Long:)我想我无法将其格式化为一个漂亮的注释way@panini但是它很长,不是吗?:)它告诉我将ad cast转换为“array”,但我不确定在这里放置什么来代替“Object”:String timeString=((Object)array).getObjectAt(0).getString(dateKey)@对不起,我误解了这个问题。我已经在这里更新了我的答案,或者你可以查看Adam的答案,其中详细介绍了一个类似的方法。我想现在它会将文档中的所有日期值进行汇总,然后显示出来。因为当我尝试uotprint date然后parsed date时,我得到的是:parsed date“Thu Jul 29 00:43:20 CEST 45909”和raw date:“33333333333 21111111111111111386598949000”它告诉我将广告转换为“array”,但我不确定在这里放置什么来代替“Object”:String timeString=((Object)array)@对不起,我误解了这个问题。我已经在这里更新了我的答案,或者你可以查看Adam的答案,其中详细介绍了一个类似的方法。我想现在它会将文档中的所有日期值进行汇总,然后显示出来。因为当我试图打印日期,然后解析日期,这就是我得到的:解析日期“Thu Jul 29 00:43:20 CEST 45909”和原始日期:“33333333 21111111111111386598949000”谢谢Adam的回复。我必须承认我没能实现你所说的,但是它看起来很接近我从一开始就有的东西。问题是我不确定DateTime jodaDate=newDateTime(时间);我必须为此创建一个类吗?还有“期望的循环”代码,我要把它放在for循环中吗?谢谢你,在你的
for
循环的末尾,你有一些类似的代码-你只需要用我提供的示例来替换它。不要担心
DateTime
对象-它是我上面链接的Joda时间库的一部分。如果您所做的只是将它从Unix时间戳解析为日期对象,然后显示它,那么就不需要更多了。如果您需要操作日期(添加日期、比较日期之间的时间等),那么我建议您查看JodaTime库以获得帮助,因为它可以处理您将遇到的许多问题