2017-09-13 204 views
0

我想将现有的字符串日期转换为新的ISO日期格式。我使用了一些脚本,但它们不足以将与日期关联的时间转换。例如:2013-01-10 12:22:22 AM转换为ISODate(“2013-01-10T06:00:00Z”)。这里的时间不是转换。请帮忙。Mongodb - 将日期时间转换为ISOdate格式

var cursor = db.customer.find({"created_at": {"$exists": true, "$type": 2 }}); 
while (cursor.hasNext()) { 
     var doc = cursor.next(); 
     var parts = doc.created_at.split("-"); 
     var dt = new Date(
      parseInt(parts[0], 10), // year 
      parseInt(parts[1], 10) - 1, // month 
      parseInt(parts[2], 10)// day 

     ); 
    db.customer.update(
    {"_id": doc._id}, 
    {"$set": {"created_at": dt}} 
    ) 
} 

回答

0

只需使用新ISODate():

new ISODate("2013-01-10 12:22:22 AM ") 
ISODate("2013-01-10T12:22:22Z") 

在您的完整的例子:

var cursor = db.customer.find({"created_at": {"$exists": true, "$type": 2 }}); 
while (cursor.hasNext()) { 
    var doc = cursor.next(); 
    db.customer.update(
    {"_id": doc._id}, 
    {"$set": {"created_at": new ISODate(doc.created_at)}} 
    ) 
} 
+0

谢谢,上面我可以用分隔符来更新日期 - 。我无法更新'2013/01/10 12:22:22 AM'这样的日期。请指教 – kishore

+0

您也可以在您的mongodb请求中使用js Date类型(它将转换为ISODate)。新日期(“2013/01/10 12:22:22 AM”)将工作。 –

+0

新的日期转换日期,但它的默认日期为1970-01-01:00:00:00。没有真正帮助我。 – kishore