MongoDB 中的时间 mongoDate 是按照标准时间 UTC +0:00 来存储的,而中国时区是 +8.00。 由于时差的原因在使用聚合函数$dateToString 时发现统计不准确的问题。如下:
db.event.aggregate([
{$project: {
"occurredAt": 1,
"occurredAtStr": {
$dateToString: {
format: "%Y-%m-%d", date: "$occurredAt"
}
},
}},
]);
/* 1 */
{
"_id" : ObjectId("5b86989be963e3000e9d89ff"),
"occurredAt" : ISODate("2018-06-25T20:00:00.000Z"),
"occurredAtStr" : "2018-06-25"
}
按照北京时间的话,应该正常显示为 2018-06-26 才对。
尝试加入 timezone 参数
db.event.aggregate([
{$project: {
"occurredAt": 1,
"occurredAtStr": {
$dateToString: {
format: "%Y-%m-%d", date: "$occurredAt", timezone: 'Asia/Shanghai'