javascript - 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." : ""
}`
);
解决方案
Duration没有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>
推荐阅读
- android - 停止 Spotify api 自动播放?
- sql-server - 即使启用了 TCP/IP,SQL Server 也不会侦听 IP 地址
- python - 将 python 脚本转换为 Spotfire Python 数据函数的问题
- node.js - Azure DevOps Pipeline 中的 Docker 映像中的单元测试
- classification - 对分类特征的值赋予权重
- python - 如何从列表中提取每个字典并将其放入数据框中?
- discord.py - 检查用户 id 是否在用户 id 列表中以允许命令访问 - discord.py
- javascript - 有没有更好的方法来修改 JavaScript 对象中的嵌套项?
- proxy - e-NFs (HTTPS) 传输未在 squid 的 access.log 中注册
- javascript - 为什么每次触控板滚动只触发一次 Safari WheelEvent