以下是我正在使用的投影
db.MyCollection.aggregate([
{ "$match": { "ProjectID" : 999 } },
{ "$sort": { "CreatedDate": -1 } },
{
"$project": {
"_id": 0,
"DueDate": {
"$dateToString": {
"format": "%Y-%m-%d %H-%M",
"date": "$DueDate"
}
}
}
}
])
我在Mongo中的截止日期值为ISODate("2016-10-08T17:00:00.000Z")
,当地时间为22:30 PM
但是使用上面的预测我得到的值是下午5:00
此ISODate("2016-10-08T17:00:00.000Z").toLocaleString()
会返回Saturday, October 08, 2016 22:30:00
那么如何在投影中应用toLocaleString()
并以上述格式获得结果
答案 0 :(得分:0)
您无法直接使用“toLocaleString()”。但是,您可以添加偏移量。
1)第三个管道用于添加偏移量
2)第四个管道用于格式化日期
var tzOffset = 5.5 * 1000 * 60 * 60;
db.MyCollection.aggregate( [
{ "$match": { "ProjectID" : 999 } },
{ "$sort": { "CreatedDate": -1 } },
{
$project: {
localTime: {
$let: {
vars: {
"localTime": { "$add": [ "$DueDate", tzOffset]
}
},
in: { $add: ["$$localTime"] }
}
}
}
},
{
$project: {
"_id": 0,
"formattedLocalTime": {
"$dateToString": {
"format": "%Y-%m-%d %H-%M",
"date": "$localTime"
}
}
}
}
]);
<强>输入: - 强>
"DueDate" : ISODate("2016-08-11T10:17:09.203Z")
"DueDate" : ISODate("2016-08-11T23:16:09.203Z")
<强>输出: - 强>
"formattedLocalTime" : "2016-08-11 15-47"
"formattedLocalTime" : "2016-08-12 04-46"
请注意输出2.下一个日期已正确填充。