如何把mongodb中Date日期值转换成本地日期值?
发布于 11 年前 作者 jbasttdi 39090 次浏览 最后一次编辑是 8 年前

大家好, 我现在用mongodb的date格式,用node.js取出json数据,再通过httpclient传到android端,但我在 android端通过jsonObject.getString(“datename”)得到的数据是:2014-01-15T07:14:57.340Z ,比实际值少了8小时,我知道是时区问题,请问一般怎么处理这个问题。 谢谢!

6 回复

如果以下这个结果没错的话

Wed Jan 15 2014 15:14:57 GMT+0800 (China Standard Time)

那么推荐用moment

npm install moment

谢谢,我要研究一下。 真的挺奇怪的,如果直接从node中查询后用console.log()输出,是这样正确的结果: Wed Jan 15 2014 15:14:57 GMT+0800 (China Standard Time),好像console会自动转换时区的。 但当字符串返回到android,用jsonObject取出来就又是Isodate格式了。

如果用moment那就是要在node端转换了,这样恐怕有问题,因为我是直接把查询结果返回给客户端,如果要转换那就要用forEach一个个转换了。 我想可能要在android端接收的时候做转换,但不知一般都是怎么处理这个问题的。

如果android端的原生应用,搜一下关键字"iso 8601 format java"应该有的吧 如果是android端的webview应用,moment也是可以的吧

用了一个函数来处理下: <pre><code> 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); } </code></pre>

我都用 moment 在前端做,無痛轉換本地時間 管他+8, +9都好

回到顶部