需求:獲取當前日期的前一個月份前端
當月有 31 天時,JS 日期對象 setMonth 問題vue
當前日期若是不是 31 號, 是沒問題的,是 31 號就會有問題:java
// 好比今天是 2018-09-30 號,前一個月應該是 2018-08-30
let now = new Date(new Date("2018-09-30").setMonth(new Date("2018-09-30").getMonth() - 1))
console.log('now :', now.toLocaleString())
// now : 2018/8/30 上午8:00:00
// 好比今天是 2018-10-31 號,前一個月沒有 31 號,因此結果 2018-10-01:
let now = new Date(new Date("2018-10-31").setMonth(new Date("2018-10-31").getMonth() - 1))
console.log('now :', now.toLocaleString())
// now : 2018/10/1 上午8:00:00
複製代碼
原理: 當前時間減去當前時間的天數node
function initLastMonth(date) {
let monthDate = new Date(date);
let newDate = new Date(monthDate.getTime() - 24 * 60 * 60 * 1000 * monthDate.getDate())
console.log('newDate :', newDate.toLocaleString())
return newDate
}
initLastMonth("2018-10-31")
// newDate : 2018/9/30 上午8:00:00
複製代碼
原理: setMonth 以前先 setDate(1)react
function initLastMonth(date) {
const now = new Date(date);
now.setDate(1)
now.setMonth(now.getMonth() - 1)
console.log(now.toLocaleString())
return now
}
initLastMonth("2018-10-31")
// 2018/9/1 上午8:00:00
複製代碼
技術文章更新地址:githubgit
對 全棧開發 有興趣的朋友能夠掃下方二維碼關注個人公衆號,我會不按期更新有價值的內容。程序員
微信公衆號:BiaoChenXuYing 分享 前端、後端開發等相關的技術文章,熱點資源,全棧程序員的成長之路。github
關注公衆號並回復 福利 便免費送你視頻資源,絕對乾貨。後端
福利詳情請點擊: 免費資源分享--Python、Java、Linux、Go、node、vue、react、javaScriptbash