JSRUN 用代码说话

日期数学与时间数学

编辑教程

日期数学与时间数学

时间数学和日期数学之间存在逻辑上的差异。

在Moment.js中,时间数学假设为线性时间标度,只是将基于UTC的时间戳增加或减少所提供的时间单位。

日期数学不使用线性时间标度,而是增加或减少日历上的日期。这是因为一天,每月或一年中的时间量是可变的。

例如,由于夏令时的过渡,一天的长度可能在23到25小时之间。

当然,月份的天数会有所不同,并且由于leap年,年份的长度也会有所不同。日期数学可能会导致一些有趣的情况。

由于夏令时,一天可能不等于24小时:

//date math
moment('2016-03-12 13:00:00').add(1, 'day').format('LLL')
"March 13, 2016 1:00 PM"
//time math
moment('2016-03-12 13:00:00').add(24, 'hours').format('LLL')
"March 13, 2016 2:00 PM"

由于leap年,一年可能不等于365天:

moment('2016-01-01').add(1, 'year').format('LL')
"January 1, 2017"
moment('2016-01-01').add(365, 'day').format('LL')
"December 31, 2016"

由于日期数学中持续时间的可变性,Moment的API官方不支持在几天或更长时间里增加或减去十进制值。

Moment.js将接受十进制值,并通过四舍五入到最接近的整数来尽力处理它们。

从2.12.0开始,十进制的日和月值使用绝对值/舍入值转换为整数。这意味着1.5舍入为2,-1.5舍入为-2。

moment().add(1.5, 'days') == moment().add(2, 'days')
moment().add(-1.5, 'days') == moment().add(-2, 'days') == moment().subtract(1.5, 'days') == moment().subtract(2, 'days')
moment().add(2.3, 'months') == moment().add(2, 'months')
moment().add(-2.3, 'months') == moment().add(-2, 'months') == moment().subtract(2.3, 'months') == moment().subtract(2, 'months')

将季度和年份转换为月份,然后将绝对值/四舍五入。

moment().add(1.5, 'years') == moment().add(18, 'months')
moment().add(.8, 'years') == moment().add(9.6, 'months') == moment().add(10, 'months')
moment().add(1.5, 'quarters') == moment().add(4.5, 'months') == moment().add(5, 'months')
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟