【问题标题】:Luxon interval human readableLuxon 区间人类可读
【发布时间】:2020-12-11 00:52:26
【问题描述】:

您好,我想以本地化的人类可读方式(例如 9 天,3 小时)表示 luxon 间隔。

我从现在开始就做到了。使用此代码:

DateTime.fromISO(value).toRelative({ locale: "es" });

但是我不能使用 Interval 或 Duration 对象来达到同样的效果。

这样就完成了。但并不是真正的本地化。

    const start = DateTime.fromSQL("2020-06-19 11:14:00");
    const finish = DateTime.fromSQL("2020-06-21 13:11:00");

    const {days, hours, minutes} = Interval
        .fromDateTimes(start, finish, {locale: "es"})
        .toDuration(["days", "hours", "minutes"]).values;
    
    console.log(
        `${days ? days + " días " : ""} ${hours ? hours + " horas" : ""} ${
            minutes ? minutes + " minutos." : ""
        }`
    );

【问题讨论】:

    标签: javascript luxon


    【解决方案1】:

    持续时间haven't any analogues of humanize() method,所以你应该使用第三方库。例如,humanize-duration,支持多语言。

    const DateTime = luxon.DateTime;
    const Interval = luxon.Interval;
    
    const start = DateTime.fromSQL("2020-06-19 11:14:00");
    const finish = DateTime.fromSQL("2020-06-21 13:11:00");
    
    const formatted = Interval
        .fromDateTimes(start, finish)
        .toDuration()
        .valueOf();
    
    console.log(humanizeDuration(formatted))
    console.log(humanizeDuration(formatted, { language: 'es' }))
    console.log(humanizeDuration(formatted, { language: 'ru' }))
    <script src="https://cdn.jsdelivr.net/npm/luxon@1.25.0/build/global/luxon.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/humanize-duration@3.25.1/humanize-duration.min.js"></script>

    【讨论】:

      猜你喜欢
      • 2017-12-01
      • 1970-01-01
      • 2022-01-10
      • 2011-07-21
      • 2013-03-30
      • 2016-07-05
      • 2017-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多