微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Luxon区间人类可读

如何解决Luxon区间人类可读

嗨,我想以一种人类可以理解的局部方式(例如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." : ""
        }`
    );

解决方法

持续时间 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>

,

使用moment

value传递到这样的时刻:

moment(value).valueOf()

然后获取差异并显示这些值:Get the days,hours and minutes in Moment.js

https://www.npmjs.com/package/moment

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。