mongodb的聚合框架(aggregate)提供了很多修改器用来修改去获取IOSDate类型的字段的年、月、日、时、分、秒、等;同时mongodb也提供了相关的修改器去把IOSDate类型的时间转换为通常我们可以接受的时间格式;
- $dayOfYear: 返回该日期是这一年的第几天。(全年366天)
- $dayOfMonth: 返回该日期是这一个月的第几天。(1到31)
- $dayOfWeek: 返回的是这个周的星期几。(1:星期日,7:星期六)
- $year: 返回该日期的年份部分 $month: 返回该日期的月份部分(between 1and12.)
- $week: 返回该日期是所在年的第几个星期(between 0and53)
- $hour: 返回该日期的小时部分 $minute: 返回该日期的分钟部分
- $second: 返回该日期的秒部分(以0到59之间的数字形式返回日期的第二部分,但可以是60来计算闰秒。)
- $millisecond:返回该日期的毫秒部分(between 0and999.)
- $dateToString: { $dateToString: { format: <formatString>, date: <dateExpression> } }
formatString:需要返回的日期式,日期格式通常为以:
| | |
%Y | Year (4 digits, zero padded) | 0000-9999 |
%m | Month (2 digits, zero padded) | 01-12 |
%d | Day of Month (2 digits, zero padded) | 01-31 |
%H | Hour (2 digits, zero padded, 24-hour clock) | 00-23 |
%M | Minute (2 digits, zero padded) | 00-59 |
%S | Second (2 digits, zero padded) | 00-60 |
%L | Millisecond (3 digits, zero padded) | 000-999 |
%j | Day of year (3 digits, zero padded) | 001-366 |
%w | Day of week (1-Sunday, 7-Saturday) | 1-7 |
%U | Week of year (2 digits, zero padded) | 00-53 |
%% | Percent Character as a Literal | |
以下是案例:
date1Str: 转换时间格式比标准时间差了8小时,date2Str:转换时间正确。
db.test.aggregate(
[
{
$project: {
timestamp: 1,
date1Str: {$dateToString: {format: "%Y-%m-%d %H:%M:%S:%L", date:{"$add":[new Date(0),"$timestamp"]}}},
date2Str: {$dateToString: {format: "%Y-%m-%d %H:%M:%S:%L", date:{"$add":[new Date(0),"$timestamp",28800000]}}}
}
}
]
)