使用Moment.js计算指定起始时间到当前时间的分钟差结果异常求助
解决Moment.js计算时间差分钟数错误的问题
看起来你遇到的核心问题是Moment.js没有正确解析你的日期格式,导致后续计算的时间差结果完全不对。
你的起始日期字符串是 '02.05.2018 18:05:03'(格式为DD.MM.YYYY HH:mm:ss),但Moment.js的自动解析规则并不适配这种带点分隔的日期格式,直接调用moment(startdate)会生成一个错误的日期对象,自然算出来的分钟数就不准确了。
正确的解决代码
你需要在解析起始日期时明确指定格式,告诉Moment.js如何解读这个字符串:
var startdate = '02.05.2018 18:05:03'; // 第二个参数传入日期格式,确保Moment精准解析 var exp = moment(startdate, 'DD.MM.YYYY HH:mm:ss'); var minutes = moment().diff(exp, 'minutes'); console.log(minutes); // 现在得到的就是正确的分钟数了
为什么这样能解决问题?
当你传入格式参数后,Moment.js会严格按照你指定的规则解析字符串:
DD:两位数的日期(对应示例中的02)MM:两位数的月份(对应示例中的05)YYYY:四位数的年份(对应示例中的2018)HH:mm:ss:24小时制的时分秒(对应示例中的18:05:03)
这样就能生成正确的起始时间对象,再和当前时间moment()计算差值,结果就完全准确了。
内容的提问来源于stack exchange,提问作者valera
相关产品推荐
相关产品推荐

