Нужно преобразовать десятичные часы.минуты в ближайшие четверть часа, используя машинопись в Angular 5/6/7 - PullRequest
0 голосов
/ 17 марта 2020

Мне нужно преобразовать значение десятичных часов в минутах (например, 2,36 - часы.минуты) в ближайшие четверть часа (2,25). Есть ли способ сделать это в Angular, используя машинопись. ввод будет 2,36, и мне нужно преобразовать его в 2,25 (где .25 четверть часа в течение 36 минут). Я сделал это в C#, используя Timespan, как показано ниже -

var time = TimeSpan.FromHours(2.36) // time: {02:21:36}
decimal round = (decimal)time.Minutes / 15;  // round : 1.4M
round = Decimal.Round(round, MidpointRounding.AwayFromZero)*15;//round :15
var roundedTime = (float)(new TimeSpan(time.Hours, (int)round, 0).TotalHours); // o/p roundedTime: 2.25

Есть ли какой-либо эквивалент TimeSpan в машинописи или преобразование для c# выше в машинописный текст? Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 17 марта 2020

Я бы порекомендовал Момент. js, если вы делаете что-то даже немного сложное с датами или временем в Javascript или Typescript. Вот инструкции по установке машинописи: https://momentjs.com/docs/# / use-it / typescript /

И есть плагин под названием moment-round, который будет делать именно то, что вы предлагаете: https://momentjs.com/docs/# / плагины / раунд /

0 голосов
/ 18 марта 2020

Я нашел решение ниже, чтобы выполнить мое требование. Это работает для меня, как и ожидалось. Но убедитесь, что вы охвачены крайним сценарием ios. наслаждайтесь !!!!

const roundedTime = (Math.round(input * 4) / 4 ).toFixed(2);
0 голосов
/ 17 марта 2020

Не существует Angular / Typescript, определяющего c способ достижения этого, но вы можете переписать некоторые функции из THIS вопроса, который, кажется, хорошо подходит для вашей проблемы. Я в основном обращаюсь к этому вопросу, потому что не совсем понятно, как поступает ваша ценность. Это объект Date, или вы получили строку?

...