$dateToString
聚合运算符按用户指定的格式将日期对象转为字符串。
语法
{$dateToString:{date:<dateExpression>,format:<formatString>,timezone:<tzExpression>,onNull:<expression>}}
字段说明:
字段是否必须描述
date
是
<dateExpression>
可以是日期、时间戳或对象Id表达式
format
否日期格式,
<formatString>
可以是任何字符串,包含0个或多个格式指示符
timezone
否执行操作的时区,
<tzExpression>
必须是能被解析为奥尔森时区标识符格式的字符串或UTC偏移量,如果
timezone
不指定,返回值显示为
UTC
onNull
否当
date
为空或缺失时的返回值。参数可以是任何有效的表达式。如果未指定
$dateToString
会在
date
为
null
或缺失时返回
null
。
使用
格式指示符
<formatString>
格式指示符可以是下面的值:
指示符描述可能的值%b月份缩写(3个字符)
jan
,
feb
,
mar
,
apr
,
may
,
jun
,
jul
,
aug
,
sep
,
oct
,
nov
,
dec
%B完整月份
january
%d一个月内的第几天(2个数字,0填充)december
01
%GISO8601格式 年31
%H小时(2个数字,0填充,24小时时钟)0000-9999
%j一年内的第几天(3个数字,0填充)00-23
%L毫秒(3个数字,0填充)001-366
%m月(2个数字,0填充)000=999
%M分钟(2个数字,0填充)01-12
%S秒(2个数字,0填充)00-59
%uISO8601格式的一周内的第几天00-60
%U一年内的第几周(2个数字,0填充)1-7
%VISO8601格式的一年内的第几周00-53
%w一周内的第几天(整数,0-Sunday,6-Saturday)1-53
%Y年(4个数字,0填充)0-6
%z时区与UTC的偏移量0000-9999
```
+/-[hh][mm]
%Z从 UTC 开始的分钟偏移量,用数字表示。例如,如果时区偏移
(+/-[hhmm])为 +0445
,则分钟偏移为
+285
。
+/-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"}},abbreviated_month:{$dateToString:{format:"%b",date:"$date",timezone:"+04:30"}},full_month:{$dateToString:{format:"%B",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","abbreviated_month":"Jan","full_month":"January"}
```
版权归原作者 原子星 所有, 如有侵权,请联系我们删除。