【问题标题】:Convert date to remaining time using momentjs使用 momentjs 将日期转换为剩余时间
【发布时间】:2014-10-19 00:45:39
【问题描述】:

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

Offer ends:  {{msg.endTime}}

以这种格式呈现为应用接收日期。 优惠结束:2014 年 8 月 18 日星期一 23:59:59 IST

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

无论是否担心 TIMEZone,这是实现的简单方法

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

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

【问题讨论】:

  • 你应该试试 moment 的 calendar() 方法,它会自动执行“在 2 天内”等等。
  • 您检查过我们提供的答案吗?如果其中一个适合,请接受它,或者如果您找到了一个,请分享您自己的解决方案。提前致谢。

标签: javascript angularjs date momentjs


【解决方案1】:

您可以为该浇注创建自己的过滤器...

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

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

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

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

干杯, 卢卡

【讨论】:

  • 感谢您的提示帮助。
【解决方案2】:

使用力矩和角力矩很容易实现。您可以使用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 适用于“消极”时间(过去)和“积极”时间(未来)

【讨论】:

【解决方案3】:

我使用Luca's answer 进行了修复,并将日期格式更改如下。 删除了 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();
        }
      })

【讨论】:

  • @apairet 接受了有助于找到解决方案的答案。
猜你喜欢
  • 2019-01-15
  • 1970-01-01
  • 2017-05-14
  • 2018-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-14
相关资源
最近更新 更多