我有一個腳本,它從API中檢索週數和年數,並將它們轉換爲MomentJS日期對象。大多數這些條目都有正確的日期,只有最後一個對象出錯了,我看不出爲什麼。MomentJS日期對象錯誤
這是JSON結構:
{
results: {
years: {
2013: {
weeks: [
40, 41, 42, 43
]
}
}
}
}
在Javascript中我做了以下循環:
for(var i in results.years[year].weeks) {
var week = parseInt(results.years[year].weeks[i]);
var startDate = '' + year + '-' + ((week.toString().length == 1) ? '' + '0' + week : week) + '-1';
var eindDate = '' + year + '-' + ((week.toString().length == 1) ? '0' + week : week) + '-7';
console.log(moment(startDate, 'GGGG-WW-E', true)); // returns the right date object
var startPeriode = moment(startDate, 'GGGG-WW-E');
console.log(startPeriode); //If week = 43, this returns a date object with date (01 october 2013), rest is all good
var eindPeriode = moment(eindDate, 'GGGG-W-E', true); //Object is always correct
}
當週爲43的錯誤目前只發生(在最後weeknumber從中檢索API)和計算startDate時(eindDate目前是完美無瑕的)。當下對象還包含其他一些變量,這些看起來很完美,PE:
startDate._a = [
'2013',
9,
21,
0,
0,
0,
0
]
我也試過如下:
moment('2013-W43-1');
moment('2013-43-1', 'GGGG-W-E');
和利用對象中的一些元素:
var startPeriode = moment('2013-W43-1');
var startDay = new Date(startPeriode._a[0] + '-' + startPeriode._a[1] + '-' + startPeriode._a[2]);
var startPeriode = moment(startDay);
我真的不知道如何解決這個問題,爲什麼這會出錯。任何一些想法?
邊注:請不要使用'換in'循環數組索引,除非你真的知道它做什麼和保障循環正確;詳細信息[* for..in'的神話和現實*](http://blog.niftysnippets.org/2010/11/myths-and-realities-of-forin.html)(以及SO:[*對於數組中的每一個。如何在JavaScript中做到這一點?*](http://stackoverflow.com/questions/9329446/for-each-in-an-array-how-to-do-that-in-javascript/ 9329476#9329476))。 –
@ T.J.Crowder謝謝!將實施您的提示! –
你確定兩者之間沒有其他變化嗎?因爲用你的json結構和代碼,我得到了所有這些日期的正確日期。例如,第43周:開始日期'2013年10月21日星期一'和結束日期'2013年10月27日' –