如何获取今天,昨天或javascript中的日期名称

时间:2017-01-26 11:27:01

标签: javascript date momentjs

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

  1. 如果日期是今天的节目时间(下午3点等)
  2. 如果日期是昨天上一个节目的一天
  3. 如果日期在同一周显示日名称(即星期日等)
  4. 所有其他人都显示确切的日期
  5. 我试过这个:

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

    我怎样才能在JavaScript中执行此操作?我试图使用momentjs。

2 个答案:

答案 0 :(得分:2)

因为您已经在使用moment.js,所以您可以利用日历时间功能

var formats = {
    sameDay: '[Today]',
    nextDay: '[Tomorrow]',
    nextWeek: 'dddd',
    lastDay: '[Yesterday]',
    lastWeek: '[Last] dddd',
    sameElse: 'DD/MM/YYYY'
}
var date = new Date()
var output = moment().calendar(date, formats);
console.log(output)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

查看documentation了解更多示例

答案 1 :(得分:1)

一种方法是:

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>

它使用时刻isSameformatsubtract