javascript - 不想只在 moment.js 中显示当前年份的年份

标签 javascript jquery momentjs

我有这段代码可以将日期转换为可读的时间格式

$('time').each(function (i, e) {

        if ($(e).attr("class") == 'mtime') {

            var now = moment();
            moment.lang('en', {
                calendar : {
                    lastDay : '[Yesterday] LT',
                    sameDay : 'LT',
                    nextDay : '[Tomorrow,] LT',
                    lastWeek : 'ddd LT',
                    nextWeek : 'ddd LT',
                    sameElse : 'MMM D[/]YY' //something to do with this?
                }

            });

            var elem = $(e).attr('datetime');
            var time = moment($(e).attr('datetime'));
            var diff = now.diff(time, 'days');

            $(e).html(time.calendar());

        }

});

返回的输出:

<time class="mtime" datetime="2016-02-26 10:31:22" title="2016-02-26 10:31:22">Feb 26/16</time>

问题是如果是当前年份,我该如何隐藏年份。如果是去年,则将其格式化为“M/D/YY”。

预期输出:

- <time>Feb 26</time> <!--// current year -->
- <time>12/25/15</time> <!--// last year -->
- <time>8/1/14</time> <!--// last year -->

请大家多多指教!时间差

最佳答案

2.14.0 版本开始,我们可以将回调传递给特定的时刻上下文:

sameElse: function() {
  if (this.years() === now.years()) {
    return 'MMM D'
  } else {
    return 'M/D/YY';
  }
}

$('time').each(function(i, e) {
  if ($(e).attr("class") == 'mtime') {
    var now = moment();
    moment.lang('en', {
      calendar: {
        lastDay: '[Yesterday] LT',
        sameDay: 'LT',
        nextDay: '[Tomorrow,] LT',
        lastWeek: 'ddd LT',
        nextWeek: 'ddd LT',
        sameElse: function() {
          if (this.years() === now.years()) {
            return 'MMM D'
          } else {
            return 'M/D/YY';
          }
        }
      }
    });
    var elem = $(e).attr('datetime');
    var time = moment($(e).attr('datetime'));
    var diff = now.diff(time, 'days');
    $(e).html(time.calendar());
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<time class="mtime" datetime="2016-02-26 10:31:22"></time> <br />
<time class="mtime" datetime="2015-12-25 10:31:22"></time> <br />
<time class="mtime" datetime="2014-08-01 10:31:22"></time> <br />

关于javascript - 不想只在 moment.js 中显示当前年份的年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39360916/

相关文章:

javascript - Bootstrap 的 JavaScript 需要 jQuery - Reactjs

javascript - Bootstrap 下拉菜单不折叠菜单

javascript - 添加将 htm 页面加载到 div 区域的 onclick

Jquery UL LI 元素,$.each 到数组

javascript - MomentJS - 设置下季度开始的时间,同时保留相同/比较日历日?

JavaScript - 转换日期和时间(Chart.js 和 Moment.js)

jquery - 使用 moment.js 显示 future 日期

php - 如何使用 PHP 单击文件名下载文件?

javascript - Javascript 中的完整 url sharepoint 项目

javascript - 如何向仅处理 javascript 代码的页面添加加载图标?