在本页面
$dateToString
根据用户指定的格式将日期对象转换为字符串。
$dateToString表达式具有以下 运算符表达式语法:
{ $dateToString: {
date: <dateExpression>,
format: <formatString>,
timezone: <tzExpression>,
onNull: <expression>
} }
在$dateToString需要具有以下字段的文档:
| 字段 | 描述 |
|---|---|
| date | 在版本3.6中更改。 转换为字符串的日期。 <dateExpression>必须是可解析为Date, Timestamp或 ObjectID的有效表达式。 |
| format | 可选的。日期格式规范。<formatString>可以是任何字符串文字,包含0或多个格式说明符。有关可用说明符的列表,请参阅“ 格式说明符” 。如果未指定,则 $dateToString使用 "%Y-%m-%dT%H:%M:%S.%LZ"默认格式。在版本4.0中更改: format如果featureCompatibilityVersion(fCV)设置为"4.0"或更大,则此字段为可选 。有关fCV的更多信息,请参见 setFeatureCompatibilityVersion。 |
| timezone | Optional.运算结果的时区。 <tzExpression>必须是一个有效的表达式,可以解析为格式为Olson时区标识符或 UTC偏移量的字符串。如果未timezone提供,结果将显示在中UTC。1. 奥尔森时区标识符: a. "America/New_York" b. "Europe/London" c. "GMT" 2. UTC偏移: a. +/-[hh]:[mm], e.g. "+04:45" b. +/-[hh][mm], e.g. "-0530" c. +/-[hh], e.g. "+03" 3.6版的新功能。 |
| onNull | 可选的。如果date为null或缺少,则返回的值。参数可以是任何有效的表达式。如果未指定, $dateToString则如果datenull为null或缺少,则返回null 。版本4.0中的新功能:要求 featureCompatibilityVersion(fCV)设置为 "4.0"或更高。有关fCV的更多信息,请参见 setFeatureCompatibilityVersion。 |
也可以看看
$toString和$convert
格式说明符
以下格式说明符可用于 <formatString>:
| 说明符 | 描述 | 可能的值 |
|---|---|---|
| %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 |
| %w | 星期几(1-星期日,7-星期六) | 1--7 |
| %u | ISO 8601格式的星期几编号(1-Monday,7-Sunday) 3.4版的新功能。 |
1--7 |
| %U | 一年中的星期(2位数字,零填充) | 00--53 |
| %V | 一年中的星期,采用ISO 8601格式 3.4版的新功能。 |
01--53 |
| %Y | 年(4位数字,零填充) | 0000--9999 |
| %z | 与UTC的时区偏移量。 3.6版的新功能。 |
+/-[hh][mm] |
| %Z | 分钟数从UTC偏移为数字。例如,如果时区偏移量(+/-[hhmm])为+0445,则分钟偏移量为+285。3.6版的新功能。 |
+/-mmm |
| %% | 文字字符百分比 | % |
例子
考虑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"
}
译者:李冠飞
校对: