大家好, 我现在用mongodb的date格式,用node.js取出json数据,再通过httpclient传到android端,但我在 android端通过jsonObject.getString(“datename”)得到的数据是:2014-01-15T07:14:57.340Z ,比实际值少了8小时,我知道是时区问题,请问一般怎么处理这个问题。 谢谢!
6 回复
谢谢,我要研究一下。 真的挺奇怪的,如果直接从node中查询后用console.log()输出,是这样正确的结果: Wed Jan 15 2014 15:14:57 GMT+0800 (China Standard Time),好像console会自动转换时区的。 但当字符串返回到android,用jsonObject取出来就又是Isodate格式了。
如果用moment那就是要在node端转换了,这样恐怕有问题,因为我是直接把查询结果返回给客户端,如果要转换那就要用forEach一个个转换了。 我想可能要在android端接收的时候做转换,但不知一般都是怎么处理这个问题的。
用了一个函数来处理下:
public static String toDateStringFromIso(String sdate) {
if ("null".equals(sdate) || "NULL".equals(sdate) || "".equals(sdate) || sdate == null) {
return "";
}
Date d1 = null;
try {
d1 = dateFormaterIsodate.get().parse(sdate);
sharecalendar.setTime(d1);
sharecalendar.set(Calendar.HOUR_OF_DAY,sharecalendar.get(Calendar.HOUR_OF_DAY)+8);
d1=sharecalendar.getTime();
} catch (Exception e) {
e.printStackTrace();
return "";
}
return dateFormater4.get().format(d1);
}