Необходимо преобразовать десятичные часы.минуты в ближайшие четверть часа с использованием машинописного текста в Angular 5/6/7.

Мне нужно преобразовать десятичное значение часов и минут (например, 2,36 - часы.минуты) в ближайшие четверть часа (2,25). Есть ли способ сделать это в Angular с помощью машинописного текста. вход будет 2,36, и мне нужно преобразовать его в 2,25 (где 0,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 в машинописном тексте или преобразовании для вышеуказанного С # в машинописный текст? Заранее спасибо!


person Mahendra    schedule 16.03.2020    source источник


Ответы (3)


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

person abim    schedule 16.03.2020
comment
Я устал stackoverflow.com/questions/4968250/, но у меня не работает. Я получаю значение 30, но ожидается 25 let hours = 2; пусть минут = 36; m = (Математическое округление (минут / 15) * 15)% 60; // м = 30 ч = минут ›52? (+ часы === 23? 0: ++ часы): часы; const roundedTime = число (ч + '.' + м * 100); - person Mahendra; 17.03.2020

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

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

person andyvanee    schedule 16.03.2020

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

const roundedTime = (Math.round(input * 4) / 4 ).toFixed(2);
person Mahendra    schedule 17.03.2020