Uploaded image for project: 'Java Driver'
  1. Java Driver
  2. JAVA-1365

Comment on: "mongodb java driver JSON.parse($date) problem"

    • Type: Icon: Improvement Improvement
    • Resolution: Won't Fix
    • None
    • Affects Version/s: 2.12.3
    • Component/s: Documentation
    • Labels:
      None

      1.java code:

      String bsonStr = "{\"time\" : { \"$date\" : \"2012-06-18T02:37:43.942+0800\" }}";
      BasicDBObject bo = (BasicDBObject) JSON.parse(bsonStr);
      System.out.println(bo.toMap().get("time"));  // result: null
      

      Why not 2012-06-18T02:37:43.942 or Wed Jun 18 02:37:43 CST 2014?
      zone: Asia/Shanghai

      bsonStr = "{\"time\" : { \"$date\" : \"2012-06-18T02:37:43.942Z\" }}";
      bo = (BasicDBObject) JSON.parse(bsonStr);
      System.out.println(bo.toMap().get("time"));  // result: Wed Jun 18 10:37:43 CST 2012
      

      2.mongo java driver source code:

      SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
      format.setCalendar(new GregorianCalendar(new SimpleTimeZone(0, "GMT")));
      o = format.parse(b.get("$date").toString(), new ParsePosition(0));
      if (o == null) {
      	format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
      	format.setCalendar(new GregorianCalendar(new SimpleTimeZone(0, "GMT")));
      	o = format.parse(b.get("$date").toString(), new ParsePosition(0));
      }
      

      the need to add format "yyyy-MM-dd'T'HH:mm:ss.SSSZ" and "yyyy-MM-dd'T'HH:mm:ssZ" or Joda Time or JDK 8 datatime class ?

      example:

      String _msDateFormats = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
      SimpleDateFormat format = new SimpleDateFormat(_msDateFormats);
      format.setCalendar(new GregorianCalendar(new SimpleTimeZone(0, "GMT")));
      Object o = format.parse(/*b.get("$date")*/"2014-06-18T02:37:43.942+0800".toString(), new ParsePosition(0));
      System.out.println(o);  //  Wed Jun 18 02:37:43 CST 2014
      

      Reporter: oo
      E-mail: 515951184@163.com

            Assignee:
            Unassigned Unassigned
            Reporter:
            xgen-internal-docs Docs Collector User (Inactive)
            Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: