javascript moment.js计算两个日期之间的百分比

javascript moment.js计算两个日期之间的百分比,javascript,momentjs,Javascript,Momentjs,我正在使用插件Moment.js,我有html <div class="record-time pull-right" data-date="2013-09-22 20:16:39" data-completion-date="2019-08-07 00:00:00"> </div> 但同样,它只在chrome中工作,我在这里遗漏了什么? 日期从mysql数据库的datetime字段中提取 我在firefox和ie中得到“NaN” 回答: var

我正在使用插件Moment.js,我有html

<div class="record-time pull-right" data-date="2013-09-22 20:16:39"
         data-completion-date="2019-08-07 00:00:00">

</div>
但同样,它只在chrome中工作,我在这里遗漏了什么? 日期从mysql数据库的datetime字段中提取

我在firefox和ie中得到“NaN”

回答:

 var record_time = $(this).find('.record-time');
 var creation_date = $(this).find('.record-time').data('date');
 var completion_date = $(this).find('.record-time').data('completion-date');

 // get percentage completed (now - startDate) / (endDate - startDate)
 now = moment();
 startDate = moment(creation_date);
 endDate = moment(completion_date);
 var percentage_complete = (now - startDate) / (endDate - startDate) * 100;
 var percentage_rounded = (Math.round(percentage_complete * 100) / 100); 
 // percentage rounded to 2 decimal points

 // set the progress bar percentages
 var record_progress = $(this).find('.bar');
 record_progress.css('width', percentage_rounded+'%');
 record_progress.html(percentage_rounded+'% - Completed');
可以在最新版本的Chrome、Firefox和IE中使用,据介绍,moment.js可以解析该格式的日期字符串

请尝试按如下方式分析日期:

moment(record_time.data('date'));
查看规范,预期的日期字符串格式是RFC2822或ISO 8601。您的日期字符串不是这两个

Date.parse("2013-09-22 20:16:39") -> NaN in FireFox
Date.parse("2013-09-22T19:16:39Z") -> 1379877399000 in FireFox

我建议使用jQuery
data('date')
而不是
attr()
record\u时间是元素,它从属性中获取数据很好,不确定你的意思
data('date')
在IE的某些版本上不起作用。是的,这比使用本机日期要好。它在chrome中继续以这种方式工作(record_time.data('date');“但不是firefox或ieIt现在可以在所有浏览器中运行,谢谢@Jason P但如何计算从数据日期attr到数据完成日期attr的时间百分比一般来说,算法是
(now-startDate)/(endDate-startDate)
我有'var percentage\u complete=(矩()-creation_date)/(completion_date-creation_date);“使用上面div中的变量,只需获取'NaN'(这不是我最美好的时刻;)我直接从mysql datetime字段中提取日期,在呈现html之前是否需要格式化它?
Date.parse("2013-09-22 20:16:39") -> NaN in FireFox
Date.parse("2013-09-22T19:16:39Z") -> 1379877399000 in FireFox