Discord如何格式化今天和昨天的日期?

约翰蒂

我目前正在开发基于网站的不和谐内容,并且希望能够集成其日期格式。

我在说什么

我在说这个:

UserOne Yesterday at 17:03

UserTwo Today at 13:06

例:

在此处输入图片说明

Zsolt Meszaros

您可以在下面找到一个快速而又肮脏的解决方案,尽管我可能会使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章