假设您的文档包含ISODate,如下所示:
db.collection.insert({"date":new Date()})
上面的查询以ISODate 格式插入date 现在您想将此ISODate 转换为给timeZone。
假设您要将上述日期转换为Eastern Daylight Saving Time ( EDT ) epoch time zone conertor,然后将offset 转换为14400 * 1000。首先将ISODate转换为timeStamp,然后再使用substract EDT OffsetintimeStampand then converttimeStamptoISODate`。
检查以下聚合查询:
db.collection.aggregate({
"$project": {
"timestamp": { //convert ISODate tom timestamp
"$subtract": [{
"$divide": [{
"$subtract": ["$date", new Date("1970-01-01")]
}, 1000]
}, {
"$mod": [{
"$divide": [{
"$subtract": ["$date", new Date("1970-01-01")]
}, 1000]
}, 1]
}]
}
}
}, {
"$project": {
"timeZoneTimeStamp": {
"$subtract": [{ //substract timestamp to given offset if offset will in postive then replace subtract to add
"$multiply": ["$timestamp", 1000]
}, 14400000]
}
}
}, {
"$project": {
"timeZoneTimeStamp": 1, //converted timeZoneTimeStamp if required
"_id": 0,
"newDate": { // newDate is converted timezone ISODate
"$add": [new Date(0), "$timeZoneTimeStamp"]
}
}
})
注意:
在上述从ISODATE 到timeStamp 的查询转换ref. here