java - Using Joda-Time to form correct ISODate for Mongo insert -
i trying update date fields in mongo require isodate format. in mongo, looks this:
"crdt" : isodate("2013-08-19t17:21:57.549z") the java framework using has me restricted using strings test parameters, trying use string datetimeformatter correct isodatetimeformat , pass mongo. cannot pass in string looks have above. trying screws field in mongo. relevant bits of joda-time code using this:
//i can't right. string crdt = "2013-01-19t15:28:58.851z"; datetimeformatter parser = isodatetimeformat.datehourminutesecondmillis(); parser.parsedatetime(crdt); // method updates record in mongo. method totally works, no // point in pasting here, can't parser object correct // in correct format once inserted, needs correct isodate form. mongo.setcrdt(recordid, parser); and when code runs errors these .parsedatetime method:
java.lang.illegalargumentexception: invalid format: "2013-01-19t15:28:58.851z" malformed @ "z" @ org.joda.time.format.datetimeformatter.parsedatetime(datetimeformatter.java:866) i can tell string giving not correct things parsed. i've tried leaving off z, i've tried other combos, each time says it's malformed. basically, starting string need to .parsedatetime work , give me object looks correct?
edit:
updated try suggestions provided below. issue run illegalargumentexception, can't serialize class org.joda.time.datetime. appears persisting joda time objects in no-go? looked @ other suggestion, looking mapper frameworks spring data. looks there whole lot more needs go this. there no simple way persist mongo?
edit2:
ok, think have now. might not have total grasp of mechanics @ play, basicdbobjects won't play nice datetime. date objects seem way go, @ least in implementation i'm dealing with. did following:
datetimeformatter parser = isodatetimeformat.datetime(); datetime result; date newresult; result = parser.parsedatetime(crdt); newresult = result.todate(); i passed in newresult basicdbobject update record in mongo. works fine, , record updated correctly.
your input string format correct, long is intended represent utc.
change parser use 1 matches format:
datetimeformatter parser = isodatetimeformat.datetime(); the rest of question doesn't make sense me. shouldn't pass parser, rather return value parsedatetime, don't appear capturing.
datetime result = parser.parsedatetime(crdt); mongo.setcrdt(recordid, result.todate()); whether or not last line work depends on function accepts.
Comments
Post a Comment