javascript - 如何在 javascript 中获取今天、昨天或日期名称

标签 javascript date momentjs

我想向聊天用户发送消息,然后将带有日期的消息以解析格式存储到我的数据库中。 因此,当我必须获取聊天记录时,我必须像这样显示时间:

  1. 如果日期是今天的演出时间(下午 3 点等)
  2. 如果日期是昨天演出的前一天
  3. 如果某天在同一周内,则显示日期名称(例如星期日等)
  4. 所有其他都显示确切日期

我已经尝试过这个:

var now = moment(new Date()); //todays date
var end = moment("2015-12-1"); // another date
var differn = now.diff(end, 'days');

如何在 JavaScript 中执行此操作?我尝试过使用 momentjs。

最佳答案

一种方法如下:

function getMyText(date){
  if( !moment.isMoment(date) ){
    date = moment(date); // ok for js date, milliseconds or string in ISO format
  }
  
  if( date.isSame(moment(), 'day') ){
    return date.format('hh:mm a');
  } else if( date.isSame(moment().subtract(1, 'd'), 'day') ){
    return 'Yesterday';
  } else if( date.isSame(moment(), 'week') ){
    return date.format('dddd');
  } else {
    return date.format('DD/MM/YYYY');
  }
}

var input = [
  moment(), // now
  moment().subtract(22, 'h'), // 22 hours ago
  moment().subtract(3, 'd'),  // 3 days ago
  moment().subtract(6, 'd'),  // 6 days ago
  moment().subtract(15, 'd')  // 15 days ago
];

for(var i=0; i<input.length; i++){
  console.log( getMyText(input[i]) );
}
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

它使用矩isSame , formatsubtract

关于javascript - 如何在 javascript 中获取今天、昨天或日期名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41872438/

相关文章:

javascript - moment.js 日期/时间比较

javascript - 如何获取 24 小时格式的日历过滤器 (Angular-Moment.js)

javascript - IE 中的按键问题(在 jquery 中)

javascript - 是否可以使用 Node js 从一个谷歌存储桶压缩到另一个

oracle - 如何在 Oracle SQL Developer 中输入和显示小时和分钟的日期?

javascript - Date.getTimezoneOffset 倒置了吗?

javascript - Momentjs future 一个月可节省开支

javascript - 如何防止 Firefox 在更改元素位置/大小时重新加载?

javascript - Vanilla JS 事件委托(delegate) - 处理目标元素的子元素

performance - 在 SPSS 中对日期排序或对字符串排序是否更快?如果是这样,增加多少?