【发布时间】:2017-09-21 14:07:51
【问题描述】:
我需要按以下顺序对消息进行排序:收到的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,因为月份不同
【问题讨论】:
标签: javascript algorithm date timestamp