奥雷里亚时间相减

时间:2018-09-19 12:46:55

标签: datetime type-conversion aurelia

我想打印在“ startDateTime”和“ endDateTime”之间发生的事件的持续时间,以分钟或秒(如果小于1分钟)表示。

换句话说,${startDateTime | dateFormat:"YYYY-MM-DD HH:mm"}是2018-09-07 11:57,而${startDateTime | dateFormat:"YYYY-MM-DD HH:mm"}是2018-09-07 13:00。 我想打印的是63 minutes

在PHP中,我会做->getTimestamp(),但是在Aurelia中,我不知道该怎么尝试。

我确实使用${endDateTime| dateFormat:"HH:mm:ss" - startDateTime| dateFormat:"HH:mm:ss"}之类的东西进行了测试,但这无法正常工作,因为它无法将整个日期时间转换为秒或分钟...

因此,有没有我认为可以实施的干净解决方案?

2 个答案:

答案 0 :(得分:1)

您想要的是相对时间,它正在通往浏览器,但是现在,您将不得不使用polyfill / library。您可以从yahoo中找到一个:https://github.com/yahoo/intl-relativeformat

答案 1 :(得分:1)

我使用值转换器解决了该问题。

import moment = require("moment");

export class DurationValueConverter {
    public toView(startAt, endAt) {
        if (!endAt) {
            // If end date is missing, use the current date and time.
            endAt = moment();
        }

        const duration = moment.duration(moment(endAt).diff(moment(startAt)));

        return duration.humanize();
    }
}

用法:${startedAt | duration:endedAt}