创建Moment对象后,有时需要对其进行一些加减等操作,Moment中提供了一些方法来完成这些操作。

Moment使用了连续接口模式,也叫做方法链。这让你可以像这样像下面这样进行方法调用:

1. 加法(Add)

moment().add(Number, String);
moment().add(Duration);
moment().add(Object);

对原moment进行时间增加操作。

这是一个优雅而健壮的方法,使你可以对已经存在的moment进行时间增加操作。通过一个时间单位和增加量,可以实现对时间的增加操作。

moment().add(7, 'days');

也可以通过简写形式实现这些操作:

moment().add(7, 'd');
```对一个时间增加多个时间单位时,可以通过一个对象实现:

moment().add(7, ‘days’).add(1, ‘months’); // 方法链实现
moment().add({days:7,months:1}); // 对象字面量实现


你可以通过任意级别的时间参数,实现时间的增加操作:

moment().add(1000000, ‘milliseconds’); // 100万毫秒
moment().add(360, ‘days’); // 30天


**对月和年的特殊考虑**当增加月后,如果目标月的天数超过出最大值,将变为目标月的最后一天:

moment([2010, 0, 31]); // 1月31
moment([2010, 0, 31]).add(1, ‘months’); // 2月28


var m = moment(new Date(2011, 2, 12, 5, 0, 0)); // 美国夏令时前的一天
m.hours(); // 5
m.add(24, ‘hours’).hours(); // 6


当为夏令时增加小时、分钟、秒或毫钞时,如你想增加一个明确的小时数,返回值会返回一个不同的小时数:

var m = moment(new Date(2011, 2, 12, 5, 0, 0)); // 美国夏令时前的一天
m.hours(); // 5
m.add(24, ‘hours’).hours(); // 6

2. 减法(Subtract)

 moment().subtract(Number, String);
moment().subtract(Duration);
moment().subtract(Object);

对原moment进行时间减少操作。

减少时间的方法与增加时间的方法moment().add()相似,只是把增加时间变成了减少时间:

moment().subtract(7, 'days');

3. 开始时间 (Start of Time)

moment().startOf(String);

对原moment设置为某一时间的单位的起始时间。

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
moment().startOf('hour');    // 设置为当前时间的小时,0分0秒0毫秒
moment().startOf('minute');  // 设置为当前的时间的分钟,according
moment().startOf('second');  // 类似 moment().milliseconds(0);

这些设置在本质上是一些快捷方法:

moment().startOf('year');
moment().month(0).date(1).hours(0).minutes(0).seconds(0).milliseconds(0);
moment().startOf('hour');
moment().minutes(0).seconds(0).milliseconds(0);

对原moment设置为某一时间的单位的结束时间。

4. 结束时间 (End of Time)

moment().endOf(String);

与moment().startOf()相同,只是将开始时间变成了结束时间:

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

5. 最大值(Maximum)

moment().max(Moment|String|Number|Date|Array);

将当前moment时间设置为和另一个moment时间相比较大值的一个,a.max(b)与a = moment.min(a, b)相同。

这是和moment.min相对的一方法:

var momentFromServer = moment(input);
var clampedMoment = momentFromServer.max();

通过moment.max方法与任意格式的有时间,与moment()取最大值:

moment().max(moment().add(1, 'd'));
moment().max("2013-04-20T20:00:00+0800");
moment().max("Jan 1 2001", "MMM D YYYY");
moment().max(new Date(2012, 1, 8));

6. 最小值(Minimum)

moment().min(Moment|String|Number|Date|Array);

将当前moment时间设置为和另一个moment时间相比较小值的一个,a.min(b)与a = moment.max(a, b)相同。

这是和moment.max相对的一方法:

moment().min("2013-04-20T20:00:00+0800");

通过moment.max方法,可以对moment进行各级别的时间设置:

var start  = moment().startOf('week');
var end    = moment().endOf('week');
var actual = moment().min(start).max(end);

7. 本地化(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()。

8. UTC

moment().utc();

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

UTC模式请参考:moment.utc()。

9. UTC 偏移量(UTC Offset)

moment().utcOffset();
moment().utcOffset(Number|String);

设置或获取一个以分为单位的UTC偏移量。

获取当前对象的UTC偏移量:

moment().utcOffset(); // (-240, -120, -60, 0, 60, 120, 240, etc.)

对当前时间设置一个明确的UTC 偏移分钟数。设置分钟数后,其本身并不会发生改变。如果你要使用某地的时区时间,要用moment-timezone进行设置:

moment().utcOffset(120);

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

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

也可以通过字符串形式进行设置:

moment().utcOffset("+08:00");
moment().utcOffset(8);
moment().utcOffset(480);

当通过字符串进行设置时,moment().utcOffset会首先匹配+00:00 +0000 -00:00 -0000,即使你输入了ISO 8601格式的字符串,moment也会将成变成这个UTC 偏移量。

输入的字符串要以+-的形式开头,如果不以这种形式开头会被解释为"+00:00"

moment().utcOffset("2013-03-07T07:00:00+08:00");

10. 时区偏移量(Timezone Offset)

moment().zone();
moment().zone(Number|String);

设置或获取一个以分钟为单位的时区偏移量。

moment().zone(); // (60, 120, 240, etc.)

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

// 以下是同一种设置方式
moment().zone(480);
moment().zone(8);

也可以通过字符串形式进行设置:

moment().zone("-08:00");

当通过字符串进行设置时,moment().zone会首先匹配+00:00 +0000 -00:00 -0000,即使你输入了ISO 8601格式的字符串,moment也会将成变成这个时区偏移量。

moment().zone("2013-03-07T07:00:00-08:00");

moment.js格式化时间常用方法相关推荐

  1. JS格式化时间之后少了8个小时

    var data = Date.parse("Tue May 26 16:53:31 CST 2020") 网上搜了这个方法,发现还是不行,最后查了一下,是时区问题 原因: new ...

  2. Day.js格式化时间

    Format 根据传入的占位符返回格式化后的日期. 将字符放在方括号中,即可原样返回而不被格式化替换 (例如, [MM]). dayjs().format() // 默认返回的是 ISO8601 格式 ...

  3. moment.js格式化时间的使用

    目录 1.安装moment插件 2.在页面注册 2.1全局注册在main.js中 2.2局部注册 3.使用moment.js获取当前时间 4.使用moment.js获取本周开始日期和结束日期 5.获取 ...

  4. vue使用 moment.js 格式化时间(获取当前日期的周一和周日)

    1.在项目中安装moment.js npm install moment --save 2.在main.js中全局引入 import moment from 'moment' //引入文件 Vue.p ...

  5. jquery中使用moment.js格式化时间

    moment.js官网 页面中引入文件 <script type="text/javascript" src="/public/front/js/moment.mi ...

  6. js格式化时间格式 (使用字符串补全功能(padStart))

    以当前时间为例: 方法一: data(){return {newTime: "", //时分秒newDay: "", //年月日newWeek: "& ...

  7. js格式化时间(YYYY-MM-DD)

    getDate(type) {const date = new Date();let year = date.getFullYear();let month = date.getMonth() + 1 ...

  8. 解决 JS 格式化时间格式错误在苹果手机 IOS 系统上为 NaN

    let time = new Date('2020-08-12 23:00:00').getTime(); 或者 let time = new Date('2020-08-12 23:00:00'). ...

  9. js格式化时间格式年月日(yyyy-MM-dd)

    var date = new Date()let nowDate = date.getFullYear() + '-' + (date.getMonth() + 1 >= 10 ? date.g ...

最新文章

  1. 我摊牌了,大厂面试Linux就这5个问题
  2. oracle or条件后 排序,WHERE条件和排序
  3. [转]LoadRunner 各个指标分析
  4. Git删除不存在对应远程分支的本地分支
  5. shiro管理下MD5加密的使用
  6. android iOS 都精通,Android IOS开发要理解何为面向对象的思维
  7. java中异常抛出后代码还会继续执行吗
  8. nginx负载均衡 加权轮询和ip_hash
  9. 字符串函数rpartition与partition
  10. 如何优化 Java 性能? 1
  11. 西门子PLC学习记录
  12. 用proxifier、ccproxy、teamviewer做网络代理
  13. 为什么仿宋字体打印出楷体_win7仿宋字体及楷体字体打包下载
  14. 计算机专业暑期三下乡活动方案,暑期三下乡活动方案
  15. 基于Websocket协议的即时通讯系统设计与实现
  16. Nand Flash控制器
  17. 高德地图-缩放比例尺控件
  18. opencv模拟景深效果
  19. 高数中一点导数大于0,能否推出函数在0这个去心邻域单增?
  20. 电子电气架构——ECU升级(Bootloader)A/B分区策略汇总

热门文章

  1. k8s中的 secret token
  2. Vue中引入静态资源的几种方式
  3. es6中标签模板实例中的tab函数的理解
  4. Java根据标签设置用户个性化菜单
  5. 土地利用(覆盖)数据下载汇总
  6. 计算机科学与技术应用宝,应用宝5.0
  7. 采用24V供电的MCU电源电路及BOM表分析
  8. 如何运用互联网,做好生态旅游项目
  9. [附源码]JSP+ssm计算机毕业设计创业项目中游戏直播代练平台ubw4t【源码、数据库、LW、部署】
  10. 【开发教程8】疯壳·开源蓝牙智能健康手表-蓝牙