如何把mongodb中Date日期值转换成本地日期值?
发布于 1年前 作者 jbasttdi 1941 次浏览

大家好, 我现在用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也是可以的吧

用了一个函数来处理下:


    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);
    }

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

回到顶部