您可以在下面找到一个快速而肮脏的解决方案,尽管我可能会为此使用
null
function isSameDay(date1, date2) {
return (date1.getDate() === date2.getDate() &&
date1.getMonth() === date2.getMonth() &&
date1.getFullYear() === date2.getFullYear())
}
function formatDate(d) {
const today = new Date()
const yesterday = new Date(today)
yesterday.setDate(yesterday.getDate() - 1)
const timeOptions = {
hour: '2-digit',
minute: '2-digit'
}
if (isSameDay(d, today)) {
// it's today
return `Today at ${d.toLocaleTimeString(undefined, timeOptions)}`
}
if (isSameDay(d, yesterday)) {
// it was yesterday
return `Yesterday at ${d.toLocaleTimeString(undefined, timeOptions)}`
}
return d.toLocaleDateString()
}
// examples
console.log({
'Now': formatDate(new Date()),
// geez, this yesterday date is ugly :D
'Yesterday': formatDate(new Date(new Date().setDate(new Date().getDate() - 1))),
'On the 5th of January': formatDate(new Date('2021-01-05 11:54'))
})