2017-02-10 130 views
0
(function() { 
    var date = new Date().toISOString().substring(0, 10), 
     field = document.querySelector('#date'); 
    var day = new Date(date); 
    var getMonday = day.getDay(), 
     diff = date.getDate() - getMonday + (getMonday == 0 ? -6:1); 
    field.value = new Date(date.setDate(diff)); 
    console.log(date); 
})(); 

我想獲取當前日期的星期一。我如何獲得本週的週一?

我不斷收到關於它的錯誤,不知道如何解決它張貼所謂的重複的

TypeError: date.getDate is not a function 
    at index.html:394 
    at index.html:398 
(anonymous) @ index.html:394 
(anonymous) @ index.html:398 

只要求對如何獲得的日期。我的問題有類似的代碼,但我得到的錯誤信息是從來沒有解決的問題

+2

的可能的複製[JavaScript的 - 獲得一週的從當前日期的第一天(http://stackoverflow.com/questions/4156434/javascript-獲取本週的第一天至今日期) – GillesC

+0

@GillesC我在帖子中有新信息未被問題回答 –

+0

您正在嘗試獲取** getDate()**從字符串 - 它沒有這樣的方法,而是使用** date **類型 – Alexey

回答

2

您將日期轉換爲字符串在第一行: date = new Date().toISOString().substring(0, 10)這是什麼導致錯誤...日期不再是日期目的。

---編輯:解決方案 我建議你要麼聲明一個額外的變量任何你作爲ISO字符串後使用,或僅後輸出時進行轉換: 對於這一點,我想建議您的格式添加到Date對象的原型

Date.prototype.myFormat = function() { 
    return this.toISOString().substring(0, 10); 
} 

更新您最初的代碼是這樣的:

var date = new Date(), 
str_date=date.toISOString().substring(0, 10), 
field = document.querySelector('#date'), 
day = new Date(date), 
getMonday = day.getDay(), 
diff = date.getDate() - getMonday + (getMonday == 0 ? -6:1); 

console.log(date); 
console.log(str_date); 
console.log(new Date(date.setDate(diff))); 
console.log(new Date(date.setDate(diff)).myFormat()); 

//Now you can update your field as needed with date or string value 
field.value = new Date(date.setDate(diff)); 
field.value = new Date(date.setDate(diff)).myFormat(); 

如果你需要在更多的地方進行getMonday也是一個函數...

快樂編碼, Codrut

相關問題