您可以在下面找到一个快速而又肮脏的解决方案,尽管我可能会使用date-fns
它。逻辑也将与此相同。检查日期是今天还是昨天。如果是,请打印单词和时间。如果不是,则仅打印日期:
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'))
})
与date-fns
:
const format = require('date-fns/format');
const isToday = require('date-fns/isToday');
const isYesterday = require('date-fns/isYesterday');
function formatDate(d) {
if (isToday(d)) {
return `Today at ${format(d, 'kk:mm')}`;
}
if (isYesterday(d)) {
return `Yesterday at ${format(d, 'kk:mm')}`;
}
return format(d, 'dd/MM/yyyy');
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句