On this page
$dateToString (aggregation)
在本页面
Definition
$dateToString
- 3.0 版中的新功能。
根据用户指定的格式将日期对象转换为字符串。
$dateToString表达式具有以下运算符表达式语法:
{ $dateToString: {
format: <formatString>,
date: <dateExpression>,
timezone: <tzExpression>
} }
$dateToString
接收具有以下字段的文档:
Field | Description |
---|---|
format |
日期格式规范。 <formatString> 可以是任何字符串 Literals,包含 0 个或多个格式说明符。有关可用说明符的列表,请参见Format Specifiers。 |
date |
在版本 3.6 中更改。 |
转换为字符串的日期。 <dateExpression>
必须是可解析为Date,Timestamp或ObjectID的有效expression。
| timezone
| Optional.
运算结果的时区。 <tzExpression>
必须是有效的expression,它必须解析为格式为奥尔森时区标识符或UTC Offset的字符串。如果未提供timezone
,结果将显示在UTC
中。
| Format
| Examples
|
| Olson 时区标识符| “美国/纽约”
"Europe/London"
“格林尼治标准时间” |
| UTC 偏移| /-[97]:[98],例如“ 04:45”
/-[99] [100],例如“ -0530”
/-[101],例如“ 03” |
3.6 版中的新功能。
Format Specifiers
以下格式说明符可用于<formatString>
:
Specifiers | Description | Possible Values |
---|---|---|
%d |
每月的日期(2 位数字,零填充) | 01 - 31 |
%G |
ISO 8601 格式的年份 | |
3.4 版中的新功能。 0000 -9999 |
||
%H |
小时(2 位数字,零填充,24 小时制) | 00 -23 |
%j |
日期(3 位数字,填充零) | 001 -366 |
%L |
毫秒(3 位数字,零填充) | 000 -999 |
%m |
月(2 位数字,零填充) | 01 -12 |
%M |
分钟(2 位数字,零填充) | 00 -59 |
%S |
第二(2 位数字,填充零) | 00 -60 |
%u |
采用 ISO 8601 格式的星期几(1-Monday,7-Sunday) 3.4 版中的新功能。 1 -7 |
|
%U |
一年中的一周(2 位数字,填充零) | 00 -53 |
%V |
年度周,采用 ISO 8601 格式 3.4 版中的新功能。 01 -53 |
|
%w |
星期几(1-星期日,7-星期六) | 1 -7 |
%Y |
年份(4 位数字,零填充) | 0000 -9999 |
%z |
时区偏离 UTC。 3.6 版中的新功能。 +/-[hh][mm] |
|
%Z |
分钟数从 UTC 偏移为一个数字。例如,如果时区偏移量(+/-[hhmm] )为+0445 ,则分钟偏移量为+285 。3.6 版中的新功能。 +/-mmm |
|
%% |
Literals 字符百分比 | % |
Example
考虑包含以下文档的sales
集合:
{
"_id" : 1,
"item" : "abc",
"price" : 10,
"quantity" : 2,
"date" : ISODate("2014-01-01T08:15:39.736Z")
}
以下聚合使用$dateToString以格式字符串形式返回date
字段:
db.sales.aggregate(
[
{
$project: {
yearMonthDayUTC: { $dateToString: { format: "%Y-%m-%d", date: "$date" } },
timewithOffsetNY: { $dateToString: { format: "%H:%M:%S:%L%z", date: "$date", timezone: "America/New_York"} },
timewithOffset430: { $dateToString: { format: "%H:%M:%S:%L%z", date: "$date", timezone: "+04:30" } },
minutesOffsetNY: { $dateToString: { format: "%Z", date: "$date", timezone: "America/New_York" } },
minutesOffset430: { $dateToString: { format: "%Z", date: "$date", timezone: "+04:30" } }
}
}
]
)
该操作返回以下结果:
{
"_id" : 1,
"yearMonthDayUTC" : "2014-01-01",
"timewithOffsetNY" : "03:15:39:736-0500",
"timewithOffset430" : "12:45:39:736+0430",
"minutesOffsetNY" : "-300",
"minutesOffset430" : "270"
}