Intervallo di Luxon leggibile dall'uomo
Aug 22 2020
Salve, vorrei esprimere un intervallo di luxon in un modo localizzato leggibile dall'uomo (ad es. 9 giorni, 3 ore).
Ho raggiunto questo a partire dal momento presente. Con questo codice:
DateTime.fromISO(value).toRelative({ locale: "es" });
Ma non posso ottenere lo stesso risultato usando né l'intervallo né gli oggetti Durata.
Questo è il lavoro fatto. Ma non è davvero la localizzazione.
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." : ""
}`
);
Risposte
8 AlexandrTovmach Jan 10 2021 at 15:49
La durata non ha analoghi al humanize()metodo , quindi dovresti usare una libreria di terze parti. Ad esempio, humanize-durationcon supporto multilingue.
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/[email protected]/build/global/luxon.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/humanize-duration.min.js"></script>