Moment.js : JavaScript 日期处理类库 utc时间/toISOString/toDate区别

参考:

Moment.js 文档

toDate / toISOString 的区别:

console.log('start =============================> ', start)
// 2021-03-29 14:28:28
console.log('start =============================> ', typeof start)
// string

console.log('moment(start) =====================> ',moment(start))
// Moment<2021-03-29T14:28:28+08:00>
console.log('moment(start) =====================> ',typeof moment(start))
// object

console.log('moment(start).toDate() ============> ',moment(start).toDate())
// 2021-03-29T06:28:28.000Z
console.log('moment(start).toDate() ============> ',typeof moment(start).toDate())
// object:Date

console.log('moment(start).toDate().toString() ============> ', moment(start).toDate().toString())
// Mon Mar 29 2021 14:28:28 GMT+0800 (China Standard Time)
console.log('moment(start).toDate().toString() ============> ',typeof moment(start).toDate().toString())
// string

console.log('moment(start).toISOString() =======> ',moment(start).toISOString())
// 2021-03-29T06:28:28.000Z
console.log('moment(start).toISOString() =======> ',typeof moment(start).toISOString())
// string

moment(start).toDate()moment(start).toISOString() 返回的类型不同

find查找 / aggregate聚合查找 日期时间段 的区别 :

let options = {};

if (mongoose.Types.ObjectId.isValid(keyword)) {
  options = { _id: mongoose.Types.ObjectId(keyword) };
} else if (keyword) {
  options = {
    $or: [ // 多条件,数组
      { name: { $regex: keyword, $options: '$i' } },
      { email: { $regex: keyword, $options: '$i' } },
    ],
  };
}

if (start && end) {
  options.$and = [
      //这里是find 使用的 toISOString
    { createdAt: { $gt: moment(start).toISOString() } },
    { createdAt: { $lt: moment(end).toISOString() } },
  ];
}

return this.find(options)
  .count()
  .exec();
let options = {};

if (mongoose.Types.ObjectId.isValid(keyword)) {
  options = { _id: keyword };
} else if (keyword) {
  options = {
    $or: [ // 多条件,数组
      { name: { $regex: keyword, $options: '$i' } },
      { email: { $regex: keyword, $options: '$i' } },
    ],
  };
}

if (start && end) {
  options.$and = [
      //aggregate 使用的是 toDate
    {createdAt: {$gt: moment(start).toDate()}},
    {createdAt: {$lt: moment(end).toDate()}},
  ];
}
return this.aggregate([
  {
    $match: options,
  },
  {
    $sort: { createdAt: -1 },
  },
  {
    $skip: perPage * (page - 1),
  },
  {
    $limit: perPage,
  },
  {
    $lookup:
        {
          from: 'counts',
          localField: '_id',
          foreignField: 'userId',
          as: 'info',
        },
  },
]).exec();

demo 一:


const moment = require('moment');

console.log('--------------当前时间戳--------------');
console.log(new Date().getTime()); // 1617350141240
console.log(moment(1617350141240).format('yyyy-MM-DD hh:mm:ss sss'));
// 2021-04-02 03:55:41 4141
console.log(moment(new Date().getTime()).format('yyyy-MM-DD HH:mm:ss sss'));
// 2021-04-02 16:01:34 3434
console.log('--------------本地时间与utc时间(min)------------------');
console.log(`utc时间 = ${new Date().getTimezoneOffset() / 60}小时 + 本地时间 `);
console.log('--------------FullYear--------------');
console.log(new Date().getFullYear()); // 2021
console.log(new Date().getUTCFullYear()); // 2021
console.log('--------------Month--------------');
console.log(new Date().getMonth()); // 3
console.log(new Date().getUTCMonth()); // 3
console.log('--------------date 每个月的第几天--------------');
console.log(new Date().getDate()); // 2
console.log(new Date().getUTCDate()); // 2
console.log('--------------day 每周的第几天--------------');
console.log(new Date().getDay()); // 5
console.log(new Date().getUTCDay()); // 5
console.log('--------------Hours--------------');
console.log(new Date().getHours()); // 15
console.log(new Date().getUTCHours()); // 7
console.log('--------------Minutes--------------');
console.log(new Date().getMinutes()); // 48
console.log(new Date().getUTCMinutes()); // 48
console.log('--------------Seconds--------------');
console.log(new Date().getSeconds()); // 32
console.log(new Date().getUTCSeconds()); // 32
console.log('--------------Milliseconds--------------');
console.log(new Date().getMilliseconds()); // 18
console.log(new Date().getUTCMilliseconds()); // 18
console.log('------------------------------------------------------------------------------------');

console.log('2021-03-29 14:28:28')
//2021-03-29 14:28:28
console.log(moment('2021-03-29 14:28:28'))
//Moment<2021-03-29T14:28:28+08:00>
console.log(moment('2021-03-29 14:28:28').toISOString())
//2021-03-29T06:28:28.000Z
console.log(typeof moment('2021-03-29 14:28:28').toISOString())
//string
console.log(moment('2021-03-29 14:28:28').toDate())
//2021-03-29T06:28:28.000Z
console.log(typeof moment('2021-03-29 14:28:28').toDate())
//object
console.log(moment('2021-03-29 14:28:28').toDate().toString())
//Mon Mar 29 2021 14:28:28 GMT+0800 (China Standard Time)
console.log(typeof moment('2021-03-29 14:28:28').toDate().toString())
//string

//moment(start).toDate() 与 moment(start).toISOString() 返回的类型不同

console.log('------------------------------------------------------------------------------------');



demo 二:



<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
    
    <script src="http://cdn.staticfile.org/moment.js/2.24.0/moment.js">script>
head>
<body>

<script>

    console.log(
        '\n', moment('2020-11-18T07:48:18.288Z').format('YYYY-MM-DD HH:mm:ss.SSS'),
        '\n',
        '\n', moment().format('MMMM Do YYYY, h:mm:ss a'), // 十一月 18日 2020, 4:05:37 下午
        '\n', moment().format('dddd'),                    // 星期三
        '\n', moment().format('MMM Do YY'),               // 11月 18日 20
        '\n', moment().format('YYYY [escaped] YYYY'),     // 2020 escaped 2020
        '\n', moment().format(),                          // 2020-11-18T16:05:37+08:00
    );

    console.log(
        '\n', moment('20111031', 'YYYYMMDD').fromNow(),// 9 年前
        '\n', moment('20120620', 'YYYYMMDD').fromNow(),// 8 年前
        '\n', moment().startOf('day').fromNow(),       // 16 小时前
        '\n', moment().endOf('day').fromNow(),         // 8 小时内
        '\n', moment().startOf('hour').fromNow(),      // 6 分钟前
    );

    console.log(
        '\n', moment().subtract(10, 'days').calendar(),// 2020/11/08
        '\n', moment().subtract(6, 'days').calendar(), // 上星期四16:05
        '\n', moment().subtract(3, 'days').calendar(), // 上星期日16:05
        '\n', moment().subtract(1, 'days').calendar(), // 昨天16:05
        '\n', moment().calendar(),                     // 今天16:05
        '\n', moment().add(1, 'days').calendar(),      // 明天16:05
        '\n', moment().add(3, 'days').calendar(),      // 下星期六16:05
        '\n', moment().add(10, 'days').calendar(),     // 2020/11/28
    );

    console.log(
        '\n', moment.locale(),        // zh-cn
        '\n', moment().format('LT'),  // 16:05
        '\n', moment().format('LTS'), // 16:05:37
        '\n', moment().format('L'),   // 2020/11/18
        '\n', moment().format('l'),   // 2020/11/18
        '\n', moment().format('LL'),  // 2020年11月18日
        '\n', moment().format('ll'),  // 2020年11月18日
        '\n', moment().format('LLL'), // 2020年11月18日下午4点05分
        '\n', moment().format('lll'), // 2020年11月18日 16:05
        '\n', moment().format('LLLL'),// 2020年11月18日星期三下午4点05分
        '\n', moment().format('llll'),// 2020年11月18日星期三 16:05
    );

script>


body>
html>


你可能感兴趣的:(Html,mongodb)