moment.js常用用法

moment("12-25-1995", "MM-DD-YYYY"); //返回一个moment对象,第二个字符串格式

常见用法
moment("3-2014", "Q-YYYY"); //Q指的是季度
moment("3-2014", "x"); //小写x是毫秒级,大写x是秒级
moment("125-2014", "DDD-YYYY"); //DDD是一年中的第几天


如果设置的时间为非法时间,使用isValid()方法验证,将返回false

moment('2010 11 31').isValid(); //false

你可以使用表示时间单位的对象来创建Moment,如下:
moment({ years:2010, months:3, date:5, hours:15, minutes:10, seconds:3, milliseconds:123});
moment({ y :2010, M :3, d :5, h :15, m :10, s :3, ms :123});//缩写


使用Unix 偏移量(毫秒)进行初始化
moment(number) 例:moment(1567851564654)

使用Unix 时间戳(秒)进行初始化
moment.unix(number) 例: moment.unix(86453456445654)

Moment对象复制
隐式调用moment()方法进行复制
var a = moment([2012]);
var b = moment(a);

显示利用moment.clone()方法进行复制
var a = moment([2012]);
var b = a.clone();

------------------------------------------------------

GET/SET

Moment.js使用了重载的getter和setters,你可能在jQuery上见过这种方式。在不指定参数时调用这些方法是一个getter,
指定参数时调用这些方法是一个setters

moment().seconds(30) === new Date().setSeconds(30);
moment().seconds() === new Date().getSeconds();
utc下的映射关系
moment.utc().seconds(30) === new Date().setUTCSeconds(30);
moment.utc().seconds() === new Date().getUTCSeconds();

秒的设置与取值,其它类似:
moment().second(Number);
moment().second(); // Number
有效输入值为 0〜59,超出后将影响相应的分。

取值(Get)
moment().get('year');
moment().get('month'); // 0 to 11
moment().get('date');
moment().get('millisecond'); //0 to 999
赋值(Set)
moment().set(String, Int);
moment().set(Object(String, Int));
moment().set('year', 2013);
moment().set('month', 3); // 四月
moment().set('date', 1);
moment().set('millisecond', 123);

moment().set({'year': 2013, 'month': 3});

moment.max(Moment[,Moment...]) 返回其中的最大值,同理最小值moment.min(Moment[,Moment...])

var a = moment().subtract(1, 'day');
var b = moment().add(1, 'day');
moment.max(a, b); // b


------------------------------------------------

日期时间的加减等操作

Moment使用了连续接口模式,也叫做方法链。这让你可以像这样像下面这样进行方法调用:
moment().add(7, 'days').subtract(1, 'months').year(2009).hours(0).minutes(0).seconds(0);

加法(Add)
moment().add(Number, String);例:moment().add(7, 'days');后面的描述单位的可以缩写

对一个时间增加多个时间单位时,可以通过方法链,也可以通过一个对象实现:
moment().add(7, 'days').add(1, 'months'); // 方法链实现
moment().add({days:7,months:1}); // 对象字面量实现


减法(Subtract)
moment().subtract(Number, String);例:moment().subtract(7, 'days');后面的描述单位的可以缩写

开始时间 (Start of Time) 对原moment设置为某一时间的单位的起始时间。
moment().startOf(String);

moment().startOf('year'); // 设置为今年1月第一天的 12:00 am
moment().startOf('month'); // 设置为本月第一天的 12:00 am
moment().startOf('quarter'); // 设置为本季度第一个月第一天的 12:00 am
moment().startOf('week'); // 设置为本周第一天的 12:00 am
moment().startOf('isoWeek'); // 设置为ISO本周的第一天的 12:00 am
moment().startOf('day'); // 设置为今天的 12:00

结束时间 (End of Time)类似于开始时间
moment().endOf(String);

moment().endOf("year"); // 设置为今年的 12-31 11:59:59.999 pm


本地化(Local)

moment().local();对原moment时间设置一个标志,对其内部使用Date#get*和Date#set*代替Date#getUTC*和Date#setUTC*

var a = moment.utc([2011, 0, 1, 8]);
a.hours(); // 8 UTC
a.local();
a.hours(); // 0 PST

UTC 与本地化相反
moment().utc();
对原moment时间设置一个标志,对其内部使用Date#getUTC*和Date#setUTC*代替Date#get*和Date#set*


UTC 偏移量(UTC Offset)
moment().utcOffset(); //设置或获取一个以分为单位的UTC偏移量。注意是以分为单位
moment().utcOffset(Number|String);

获取当前对象的UTC偏移量:
moment().utcOffset(); // (-240, -120, -60, 0, 60, 120, 240, etc.)

当输入小于16且小于-16时,moment会理解为输入的是小时

moment().utcOffset(8); // 设置小时偏移量
moment().utcOffset(480); // 设置分钟偏移量 (8 * 60)

客户端与服务器不在同一时区

一般遇到时区问题,要考虑清楚,统计当天数据或者判断在当天内等情况时,  需要先进行偏移,注意时区偏移取  偏移量的相反数,比如东八区是(-8),utcoffset里面就是(-(-8)),

再进行startOf('day')    例:moment(new Date()).utcoffset(8).startOf()

 

时区偏移量(Timezone Offset),应该是与UTC偏移量相反,(UTC偏移量是指相对于UTC时间,时区偏移量是指相对于本地)

设置或获取一个以分钟为单位的时区偏移量。 注意是以分为单位
moment().zone();
moment().zone(Number|String);


-----------------------------------------------------------

日期时间的格式化

格式化(Format)
moment().format();
moment().format(String);
例:
moment().format(); // "2014-09-08T08:02:17-05:00" (ISO 8601)
moment().format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Sunday, February 14th 2010, 3:25:50 pm"
moment().format("x"); //1360013296123
moment().format('YYYY MM DD'); // "Invalid date"


时差 (之前,相对于当前时间)
moment([2007, 0, 29]).fromNow(); // 10年前
如果设置为true,会得到一个不含后缀的值:
moment([2007, 0, 29]).fromNow(); // 10年前
moment([2007, 0, 29]).fromNow(true); // 10年

时差 (之前)
如果你想显示一个moment时间与另一个的关系,可以使用moment().from()方法:
var a = moment([2007, 0, 28]);
var b = moment([2007, 0, 29]);
a.from(b) // "a day ago"-1天前


与moment().from()一样,也可以设置第二个参数为true,然后得到一个不含后缀的值。这在显示两个时间之间的时差时,非常有用:
var start = moment([2007, 0, 5]);
var end = moment([2007, 0, 10]);
end.from(start); // "in 5 days"
end.from(start, true); // "5 days"

时差(之后) moment('').toNow() 与 moment('').fromNow相反


时差 (毫秒) 获取一个毫秒级的时差,moment().diff()方法类似于moment().from()方法。
moment().diff(Moment|String|Number|Date|Array);

var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
a.diff(b) // 86400000

Unix 偏移量 (毫秒) moment().valueOf()会简单的输出一个毫秒级的Unix时间偏移量,类似于Date.valueOf()。

moment().valueOf();
moment().valueOf(); // 1318874398806

Unix 时间戳 (秒) moment().unix()会返回一个Unix时间戳
moment().unix();
moment(1318874398806).unix(); // 1318874398 注意单位是秒

日期装换:天数,Date对象,数组,对象
天数 (月)
moment().daysInMonth(); 获取当前月的天数。

moment("2012-02", "YYYY-MM").daysInMonth() // 29
moment("2012-01", "YYYY-MM").daysInMonth() // 31


JavaScript Date对象
moment().toDate(); 通过Moment.js获取一个JavaScript Date对象,使用moment().toDate()方法
将要返回的Date是moment正在使用的对象,所以任何对Date的修改也会导致moment改变。如果你只想获取一个Date副本,
应该在调用moment().toDate()方法前使用moment().clone()方法。

数组
moment().toArray(); 返回一个数组,返回值是new Date()参数的镜像。
moment().toArray(); // [2013, 1, 4, 14, 40, 16, 154];[年,月,日,时,分,秒,毫秒]

对象
moment().toObject(); 返回一个包括:年、月、日、时、分、秒、毫秒的对象
moment().toObject() // {
// years: 2015
// months: 6
// date: 26,
// hours: 1,
// minutes: 53,
// seconds: 14,
// milliseconds: 600
// }

 

----------------------------------------------------------------

日期时间的查询

1. 是否之前:isBefore()
moment().isBefore(Moment|String|Number|Date|Array); 检查moment是否在另一个时间之前。
例:moment('2010-10-20').isBefore('2010-10-21'); // true

如果你想将比较粒度限制为毫秒以外的单位,可以在第二个参数设置要比较的单位。
当设置了第二个参数后,不仅仅会比较这一个级别的单位,当以天为单位比较时,同时会比较年、月、日。
moment('2010-10-20').isBefore('2010-12-31', 'year'); // false
moment('2010-10-20').isBefore('2011-01-01', 'year'); // true

支持year month week day hour minute second,不支持milliseconds

2. 是否相同:isSame() 有时候很实用

moment().isSame(Moment|String|Number|Date|Array); 检查moment是否和另一个时间相同。
例:moment('2010-10-20').isSame('2010-10-20'); // true

如果你想将比较粒度限制为毫秒以外的单位,可以在第二个参数设置要比较的单位。可以用来比较是否在同一年,同一个月,或者同一天等等

moment('2010-10-20').isSame('2009-12-31', 'year'); // false
moment('2010-10-20').isSame('2010-01-01', 'year'); // true
moment('2010-10-20').isSame('2010-12-31', 'year'); // true
moment('2010-10-20').isSame('2011-01-01', 'day'); // false

当设置了第二个参数后,不仅仅会比较这一个级别的单位。输入低级别的单位后,也同时会比较其上级单位,
如:当以天为单位比较时,同时会比较年、月、日。
moment('2010-01-01').isSame('2011-01-01', 'month'); // false, 年不同
moment('2010-01-01').isSame('2010-02-01', 'day'); // false, 月不同

3. 是否之后:isAfter() 跟isBefore()相反

4. 是否之间:isBetween()

moment().isBetween(moment-like, moment-like); 检查moment是否在另外两个时间之间,可选比较单位可以是:分、小时、天等。
检查moment是否在另外两个时间之间,可选比较单位可以是:分、小时、天等。
moment('2010-10-20').isBetween('2010-10-19', '2010-10-25'); // true

如果你想将比较粒度限制为毫秒以外的单位,可以在第三个参数设置要比较的单位。
moment('2010-10-20').isBetween('2010-01-01', '2012-01-01', 'year'); // false
moment('2010-10-20').isBetween('2009-12-31', '2012-01-01', 'year'); // true


5. 是否闰年:isLeapYear() moment().isLeapYear()在是闰年是返回true,否则返回false。

6.是否Moment对象:isMoment() moment.isMoment()方法用于检查,是否是一个moment对象。

7.是否Date对象:isDate() moment.isDate()方法用于检查,是否是一个JavaScript Date对象。


-----------------------------------------------------

时间段(Durations)

1. 创建时间段:duration()

moment.duration(Number, String);
moment.duration(Number);
moment.duration(Object);
moment.duration(String);


创建一个时间段,通过moment.duration()方法并传入一个毫秒级的时间戳。
moment.duration(100); // 100 毫秒

如果你想在创建时间段时使用非毫秒级的单位,你可以像这样传入时间单位: 可以使用简写
moment.duration(2, 'seconds');
moment.duration(2, 'minutes');
moment.duration(2, 'hours');

像moment#add一样,你可以按需要传入一个包含多个单位的对象。
moment.duration({
seconds: 2,
minutes: 2,
hours: 2,
days: 2,
weeks: 2,
months: 2,
years: 2
});

最后还可以传入一个字符串创建时间段

moment.duration('23:59:59'); 秒的部分还支持这样23:59:59.999


2. 增加时间:add() 对原时间段增加时间。
moment.duration().add(Number, String);
moment.duration().add(Number);
moment.duration().add(Duration);
moment.duration().add(Object);
在创建时间段时使用的简写形式的时间单位,在这里也同样适用。可以第二个参数中传入。
var a = moment.duration(1, 'd');
var b = moment.duration(2, 'd');
a.add(b).days(); // 3

3.是否时间段:isDuration()
moment.isDuration(obj); 检查是否是一个有效的时间段对象,使用moment.isDuration()

moment.isDuration() // false
moment.isDuration(new Date()) // false
moment.isDuration(moment()) // false
moment.isDuration(moment.duration()) // true
moment.isDuration(moment.duration(2, 'minutes')) // true

 

转载于:https://www.cnblogs.com/GYZhao/p/7077002.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用 moment.js 库在 Node.js 中获取时间的各种格式非常简单。首先需要在项目中安装 moment 库,然后在代码中引入它,如下所示: ``` const moment = require('moment'); ``` 然后,可以使用 moment() 函数获取当前时间,并使用各种格式函数对时间进行格式化,如下所示: ``` const now = moment(); console.log(now.format('YYYY-MM-DD HH:mm:ss')); // 输出当前时间的格式为 "2019-12-01 22:30:59" ``` 常用的格式化函数有: - YYYY: 年 - MM: 月 - DD: 日 - HH: 时 - mm: 分 - ss: 秒 这些函数可以组合使用,以满足不同的格式需求。 如果你需要格式化一个特定的日期时间,可以在 moment() 函数中传入日期时间字符串或时间戳,如下所示 ``` const specificTime = moment('2022-11-25 12:10:15', 'YYYY-MM-DD HH:mm:ss'); console.log(specificTime.format('YYYY-MM-DD HH:mm:ss')); // 输出特定时间 "2022-11-25 12:10:15" ``` 总之, moment.js 是一个功能非常强大且易用的时间处理库, 是在 Node.js 中处理时间的首选库。 ### 回答2: Node.js 是一种基于 Chrome V8 引擎的 JavaScript 运行环境,可以在服务器端运行 JavaScript 代码。moment.js 是一个常用JavaScript 日期处理库,可以帮助我们方便地获取、格式化和操作日期和时间。 在 Node.js 中使用 moment.js,我们需要先在项目中安装 moment.js 库。可以使用 npm(Node 包管理器)进行安装,命令如下: ``` npm install moment --save ``` 安装完成后,我们可以在代码中引入 moment 模块并使用它提供的函数来获取时间的各种格式。以下是几个常用的示例: 1. 获取当前时间的字符串格式: ```javascript const moment = require('moment'); const currentTime = moment().format('YYYY-MM-DD HH:mm:ss'); console.log(currentTime); ``` 2. 获取指定日期的字符串格式: ```javascript const moment = require('moment'); const date = moment('2022-12-31'); const dateString = date.format('YYYY年MM月DD日'); console.log(dateString); ``` 3. 获取当前时间的 Unix 时间戳: ```javascript const moment = require('moment'); const unixTimestamp = moment().valueOf(); console.log(unixTimestamp); ``` 4. 根据指定的时间格式解析字符串为日期对象: ```javascript const moment = require('moment'); const dateString = '2022年12月31日'; const date = moment(dateString, 'YYYY年MM月DD日'); console.log(date.format('YYYY-MM-DD')); ``` 这些只是 moment.js 提供的一小部分功能,还有很多其他的日期和时间处理函数可以使用。通过使用 moment.js,我们可以更轻松地处理和格式化日期和时间数据。 ### 回答3: node.js是一种用于构建高度可伸缩的网络应用程序的JavaScript运行时环境。moment.js是一个JavaScript日期处理库,可简化日期和时间的操作和格式化。 使用moment.js可以轻松获取和处理各种时间格式。 首先,通过在node.js脚本中引入moment.js库,我们可以使用其提供的各种函数和方法。例如,我们可以使用`moment()`函数来获取当前的日期和时间,如下所示: ```javascript const moment = require('moment'); const now = moment(); // 获取当前日期和时间 console.log(now); ``` 这会将当前的日期和时间以默认格式打印出来。moment.js还提供了各种格式选项,可以根据需要进行格式化。例如,我们可以使用`format()`方法来将日期和时间格式化为指定的字符串格式: ```javascript const formattedDateTime = now.format('YYYY-MM-DD HH:mm:ss'); console.log(formattedDateTime); ``` 上述代码将当前日期和时间格式化为"年-月-日 时:分:秒"的格式,并将其打印出来。 除了`format()`方法,moment.js还提供了许多其他用于获取和处理各种时间格式的方法。例如,我们可以使用`year()`、`month()`、`date()`、`hour()`、`minute()`、`second()`等方法获取特定时间单位的值: ```javascript const year = now.year(); // 获取当前年份 const month = now.month() + 1; // 获取当前月份(需要额外加1,因为月份从0开始) const date = now.date(); // 获取当前日期 const hour = now.hour(); // 获取当前小时 const minute = now.minute(); // 获取当前分钟 const second = now.second(); // 获取当前秒数 console.log(`${year}-${month}-${date} ${hour}:${minute}:${second}`); ``` 通过这些方法,我们可以获取到某个特定时间单位的值,并根据需要进行进一步格式化和处理。 以上只是介绍了moment.js中的一些基本用法,它还有很多其他功能和方法可以帮助我们处理日期和时间。希望这些信息对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值