我需要排序按以下順序消息:收到Today
,Yesterday
,並且This Week
算法對消息進行分組按時間
規則This Week
:開始於最近的星期一 - 不包括Today
或Yesterday
含義:
如果Today
是星期日,Yesterday
是星期六,This Week
是星期五,星期四,星期三,星期二和星期一
如果Today
是星期四,Yesterday
是星期三,This Week
是週二和週一
但如果Today
是星期二,Yesterday
是星期一 - This Week
無天
如果Today
是星期一,Yesterday
是星期天 - - This Week
沒有日子
我一直在努力找出如何解決This Week
。我不斷收到錯誤,有這麼多的優勢情況下需要考慮的。
這裏是我的嘗試:
var currentDate = new Date()
var currentMonth = currentDate.getMonth()+1
var currentYear = currentDate.getFullYear()
var currentDayofMonth = currentDate.getDate()
var currentDayofWeek = currentDate.getDay()
messages.forEach((message, index) => {
var date = message.date.substring(0, 10).replace(/-/g, '\/')
var messageDate = new Date(date)
var messageMonth = messageDate.getMonth()+1;
var messageYear = messageDate.getFullYear();
var messageDayOfMonth = messageDate.getDate();
var messageDayOfWeek = messageDate.getDay();
//TODAY
if(currentDayofMonth == messageDayOfMonth && currentMonth == messageMonth && currentYear == messageYear) {
messageTypeList["Today"].push(message)
return
}
//YESTERDAY
if(currentDayofMonth == messageDayOfMonth+1 && currentMonth == messageMonth && currentYear == messageYear) {
messageTypeList["Yesterday"].push(message)
return
}
//THIS WEEK
if(currentDayofWeek != 1 && currentDayofWeek != 2 && currentMonth == messageMonth && currentYear == messageYear) {
messageTypeList["This Week"].push(message)
return
}
})
任何想法?
注意
我相信我有一個邊緣情況的錯誤在Yesterday
- 例如,如果Today
是5月1日,就不算數4月30日爲Yesterday
,因爲下個月是不同
非常感謝。非常有幫助和聰明的方法.. 但是,如果今天是27,昨天是26,那麼這個星期應該是25和24.看起來你的嘗試可能有一個錯誤? – user2456977
你有不同的輸出嗎?我添加了腳本給我的輸出。 – trincot
奇怪,當我運行的代碼片段,我得到這樣的輸出: '{ 「今日」:[{ 「日期」: 「2017年4月26日」 },{ 「日期」:「2017年-04-27" } ], 「昨天」:[{ 「日期」: 「2017年4月25日」 } ], 「本週」:[{ 「日期」:「 2017-04-24「 } ] }' – user2456977