4

我正在使用插件 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>

我想计算从 data-date attr 到 data-completion-date attr 所用时间的百分比,这些日期在 firefox 或 ie 中不起作用,但在 chrome 中很好。

我可以使用以下方式从日期获取时间:

      moment(new Date(record_time.attr('data-date'))).fromNow()

但同样它只适用于 chrome,我在这里缺少什么?日期是从 mysql 数据库日期时间字段中提取的。

我在Firefox中得到'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

4

2 回答 2

2

根据文档,moment.js 可以解析该格式的日期字符串。

尝试像这样解析日期:

moment(record_time.data('date'));
于 2013-09-23T13:34:49.053 回答
0

查看Date.parse规范,预期的日期字符串格式是 RFC2822 或 ISO 8601。您的日期字符串不是这两种格式。

Date.parse("2013-09-22 20:16:39") -> NaN in FireFox
Date.parse("2013-09-22T19:16:39Z") -> 1379877399000 in FireFox
于 2013-09-23T13:35:32.960 回答