首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用dayjs的相对时间

如何使用dayjs的相对时间
EN

Stack Overflow用户
提问于 2021-02-26 08:25:14
回答 1查看 3.9K关注 0票数 1

嗨,伙计们,我在使用Dayjs相对时间时有个奇怪的问题

以前我用的是

代码语言:javascript
复制
var date = "2021-02-26 16:04:15";
moment(date).fromNow();

相对时间总是按预期增长的。

代码语言:javascript
复制
20 minutes ago, then increase to 21 minutes ago, then increase to 22 minutes ago

然而,当我使用dayjs时,相对时间并没有增加。它适用于页面加载,但从不增加。

代码语言:javascript
复制
import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';

var date = "2021-02-26 16:04:15";
dayjs(date).fromNow();

输出

代码语言:javascript
复制
20 minutes ago, and never increase. Just static

有什么配置是我错过的,或者dayjs不提供相对时间的自动更新?

EN

回答 1

Stack Overflow用户

发布于 2022-04-18 07:56:53

经过我的研究,我相信和MomentJS相比,Day没有自动增量的相对时间。

因此,我只需要使用setTimeout自动发出事件每60秒包含最新的时间戳。

所有需要相对时间的地方都会被通知以更新状态。

Vue JS中的示例

app.js

代码语言:javascript
复制
created() {

    let self = this;

    this.timer = setInterval(function () { self.$eventBus.$emit("updateTimeLabel", new Date()); }, 60000);

},
beforeDestroy() {
    clearInterval(this.timer)
}

TimeLabel.vue

代码语言:javascript
复制
props: {
    timestamp: {
      type: String,
      required: true,
    },
},
data() {
    return {
      from_now: null,
    };
},
created() {
    this.from_now = this.$fromNow(this.timestamp);

    // every one minute, app.js will emit event to update all TimeLabel.vue relative time

    this.$eventBus.$on("updateTimeLabel", (datetime) => {
      this.from_now = this.$fromNow(this.timestamp);
    });
},
methods: {

    $fromNow(timestamp) {
      return dayjs.utc(timestamp.substring(0, 23)).local().fromNow();
    },
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66382420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档