2013-09-23 77 views
3

之間計算百分比我使用的插件Moment.js和我有HTML的JavaScript moment.js兩個日期

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

</div> 

,我想計算的時候從數據日期已過ATTR的百分比data-completion-date attr,這些日期在firefox或ie中不起作用,但在Chrome中沒問題。

我可以用得到的日期時間:

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

但同樣它只能在鉻,我缺少什麼嗎? 日期是從MySQL數據庫日期時間字段中提取的。

我在Firefox中得到 '男' 和IE

答:

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

+0

我會建議使用jQuery'數據(「日」)',而不是'ATTR()' –

+0

RECORD_TIME是元素和它會從屬性數據就好了,不知道你的意思 – CaptRisky

+0

'數據('date')'在某些版本的IE中不起作用。 –

回答

2

的最新版本,據the docs,moment.js能解析日期字符串的格式。

嘗試解析日期是這樣,而不是:

moment(record_time.data('date')); 
+0

是的,這比使用本地日期更好。 – olan

+0

它繼續以chrome的方式工作'moment(record_time.data('date'));'但不是火狐或即 – CaptRisky

+0

這個小提琴適用於我在Chrome和FF:http://jsfiddle.net/YQGy6/ –

0

望着Date.parse規範,預期datestring格式爲RFC2822或ISO 8601你datestrings既不是這些。

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

我拉直接從MySQL日期時間字段的日期,我需要格式化之前呈現HTML? – CaptRisky