момент js: строка пользовательского формата для продолжительности дня - PullRequest
0 голосов
/ 25 января 2019

У меня довольно вязкая строка со временем.Как то так - "2.23:59:59.99".Это означает, что первое число перед точкой - это количество дней (2 дня), а другое - время 23 часа 59 минут 59 секунд и 9900 миллисекунд (или, может быть, 99 миллисекунд).Поэтому мне нужно преобразовать его в десятичное число, например 2.99.Как я могу сделать это с помощью moment.js?

Ответы [ 2 ]

0 голосов
/ 25 января 2019
moment.duration('2.23:59:59.99').asDays() 

См. Момент JS .asDays () метод

0 голосов
/ 25 января 2019

Вы можете просто создать длительность момента из вашей "2.23:59:59.99" строки

Начиная с 2.1.0 , момент поддерживает синтаксический анализ временных интервалов в стиле ASP.NET. Поддерживаются следующие форматы.

Формат - это строка часов, минут и секунд, разделенных двоеточиями, такими как 23:59:59. Количество дней может начинаться с точечного разделителя, например 7.23:59:59. Частичные секунды также поддерживаются 23:59:59.999.

и затем получить его значения в днях, используя asDays()

moment.duration().asDays() получает продолжительность в днях.


Чтобы вернуть "2.23:59:59.99" из 2.99, вы можете создать длительность, используя moment.duration(Number, String) и использовать format() метод момент-длительности-формата плагин (используя точность параметр)

// 2.23:59:59.99 to 2.99
const dur1 = moment.duration("2.23:59:59.99");
const durAsDays = dur1.asDays();
console.log(durAsDays);

// 2.99 to 2.23:59:59.99
const dur2 = moment.duration(durAsDays, 'days');
console.log(dur2.format("d.HH:mm:ss", 2));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/2.2.2/moment-duration-format.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...