如何使用Momentjs格式化日期,使其看起来像这样?

时间:2020-06-24 19:29:00

标签: javascript mongodb date momentjs

我将以下日期格式与片刻一起用于在MongoDB中保存文档的日期。问题是,MongoDB认为它以某种方式被转换了。现在,如果我想通过指定日期来获取数据,则不能使用与创建日期相同的变量。谁能告诉我我该怎么做?

  const date = new Date();
  const firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
  const startDate = moment(firstDay);
  const day = startDate;

day变量在MongoDB中另存为

'Wed Jun 24 2020 00:00:00 GMT+0300' 

但是,如果我尝试按日期查找文档,则实际返回的是day变量

2020-06-24T22:17:09+03:00

我想我要做的是以'Wed Jun 24 2020 00:00:00 GMT+0300'格式返回今天的日期,并将时间设置为0,因为我只需要日期即可搜索所需的文档。

编辑:我能够使用Date而不是Momentjs。

  const date = new Date();
  date.setHours(0, 0, 0, 0);
  console.log(date.toString().split("(Eastern European Summer Time)")[0]);
  //Wed Jun 24 2020 00:00:00 GMT+0300

1 个答案:

答案 0 :(得分:1)

您可以在聚合管道中使用$dateFromString来实现它。

您的查询可能与此类似:

db.collection.aggregate( [ {
   $project: {
      date: {
         $dateFromString: {
            dateString: '$date'
            format:<formatStringExpression>
} ] )

来自MongoDB官方文档:

3.6版的新功能。

将日期/时间字符串转换为日期对象。

$ dateFromString表达式具有以下语法:

{ $dateFromString: {
     dateString: <dateStringExpression>,
     format: <formatStringExpression>,
     timezone: <tzExpression>,
     onError: <onErrorExpression>,
     onNull: <onNullExpression>
} }

您可能还想查看聚合管道中的$dateToString,该管道提供了格式化的日期字符串

语法与上面类似:

db.collection.aggregate( [ {
   $project: {
      date: {
         $dateToString: {
            dateString: '$date'
            format:<formatString>
} ] )