Node.js Moment

安装moment如下:

  1. npm install moment

moment提供了一个函数,可用于将JavaScript的date对象包装到moment对象中。

有很多方法来创建moment对象。 最简单的是简单地传递一个date对象。

例子

要将moment对象转换为JavaScript date,只需调用toDate成员函数。

  1. var moment = require("moment");
  2. // From date to moment
  3. var wrapped = moment(new Date());
  4. console.log(wrapped);
  5. // From moment to date
  6. var date = wrapped.toDate();
  7. console.log(date);

Date字符串解析

Moment提供可靠的字符串解析。

解析的字符串的结果是一个包装的moment对象。

要解包,请调用toDate。

  1. var moment = require("moment");
  2. // From string to date
  3. console.log(moment("12-25-1995", "MM-DD-YYYY").toDate());
  4. console.log(moment("2010-10-20 4:30", "YYYY-MM-DD HH:mm").toDate());

Date格式

moment可以做date格式化。

  1. var moment = require("moment");
  2. var date = new Date(2010, 1, 14, 15, 25, 50);
  3. var wrapped = moment(date);
  4. // "Sunday, February 14th 2010, 3:25:50 pm"
  5. console.log(wrapped.format(""dddd, MMMM Do YYYY, h:mm:ss a""));
  6. // "Sun, 3PM"
  7. console.log(wrapped.format("ddd, hA"));
  8. var a = moment([2007, 0, 15]); // 15 Jan 2007
  9. var b = moment([2007, 0, 16]); // 16 Jan 2007
  10. var c = moment([2007, 1, 15]); // 15 Feb 2007
  11. var d = moment([2008, 0, 15]); // 15 Jan 2008
  12. console.log(a.from(b)); // "a day ago"
  13. console.log(a.from(c)); // "a month ago"
  14. console.log(a.from(d)); // "a year ago"
  15. console.log(b.from(a)); // "in a day"
  16. console.log(c.from(a)); // "in a month"
  17. console.log(d.from(a)); // "in a year"

序列化Date

如果我们在JavaScript date中调用toJSON方法,我们将获取ISO8601格式化的字符串。

类似地,将此字符串传递给JavaScript date构造函数会给我们提供一个新的JavaScript date对象。

  1. var date = new Date(Date.UTC(2020, 0, 1));
  2. console.log("Original", date);
  3. // To JSON
  4. var jsonString = date.toJSON();
  5. console.log(jsonString); // 2020-01-01T00:00:00.000Z
  6. // From JSON
  7. console.log("Round Tripped",new Date(jsonString));

如果任何对象都有一个toJSON方法,当它试图序列化到JSON时,它将被JSON.stringify调用。

因此,如果我们想要,可以使用它来定制任何JavaScript对象的序列化。

  1. var foo = {};
  2. var bar = { "foo": foo };
  3. // Uncustomized serialization
  4. console.log(JSON.stringify(bar)); // {"foo":{}}
  5. // Customize serialization
  6. foo.toJSON = function () { return "custom" };
  7. console.log(JSON.stringify(bar)); // {"foo":"custom"}