$dateToString (aggregation)

在本页面

Definition

  • $dateToString
    • 3.0 版中的新功能。

根据用户指定的格式将日期对象转换为字符串。

$dateToString表达式具有以下运算符表达式语法

{ $dateToString: {
    format: <formatString>,
    date: <dateExpression>,
    timezone: <tzExpression>
} }

$dateToString接收具有以下字段的文档:

FieldDescription
format日期格式规范。 <formatString>可以是任何字符串 Literals,包含 0 个或多个格式说明符。有关可用说明符的列表,请参见Format Specifiers
date在版本 3.6 中更改。


转换为字符串的日期。 <dateExpression>必须是可解析为DateTimestampObjectID的有效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>

SpecifiersDescriptionPossible Values
%d每月的日期(2 位数字,零填充)01 - 31
%GISO 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"
}