使用momentjs将日期转换为剩余时间

时间:2014-08-25 19:38:59

标签: javascript angularjs date momentjs

在其中一个应用程序中,我得到的日期为以下格式。 2014年8月18日星期一23:59:59 IST 2014 下面是角度js的ng-repeat

Offer ends:  {{msg.endTime}}

以此格式呈现为应用程序接收日期。 优惠截止日期:2014年8月18日星期一23:59:59 IST 2014

我想显示剩余时间而不是日期/时间。 喜欢优惠在2天40分10秒结束

使用和不用担心TIMEZone实现的简单方法

我打算使用格式为moment().format("ddd MMM HH:mm:SS")

的momentjs

演示应用https://flipkartoffers.firebaseapp.com/

3 个答案:

答案 0 :(得分:4)

你可以为那个pourpose创建自己的过滤器......

yourOwnApp.filter('datetimeToNow', function() {
  return function(input) {
    if(!input) return;

    return moment(input).fromNow();
  };
});

...随后只需在您的ngRepeat中调用它:

Offer ends:  {{msg.endTime | datetimeToNow}}

干杯, 卢卡

答案 1 :(得分:3)

使用力矩和角度矩非常容易实现。您可以使用am-time-ago指令。 https://github.com/urish/angular-moment

<span am-time-ago="message.time"></span>
<span am-time-ago="message.time" am-preprocess="unix"></span>

am-time-ago适用于“负面”和“负面”时间(过去)和“积极的”#39;时间(未来)

答案 2 :(得分:0)

我使用Luca's回答修复,并更改日期格式如下。 删除了IST 2014年8月18日星期一23:59:59

<span>Ends {{msg.endTime | formatTime}}</span>

-

myApp.filter('formatTime', function() {
          return function(text) {
            var m = moment(text , 'ddd MMM DD HH:mm:ss YYYY');
            return m.fromNow();
        }
      })