Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 需要使用角度为5/6/7的打字脚本将十进制小时数转换为最接近的四分之一小时数_Angular_Typescript_Timespan - Fatal编程技术网

Angular 需要使用角度为5/6/7的打字脚本将十进制小时数转换为最接近的四分之一小时数

Angular 需要使用角度为5/6/7的打字脚本将十进制小时数转换为最接近的四分之一小时数,angular,typescript,timespan,Angular,Typescript,Timespan,我需要将十进制小时分钟值(例如:2.36-hours.minutes)转换为最接近的四分之一小时(2.25)。有没有办法用typescript在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; /

我需要将十进制小时分钟值(例如:2.36-hours.minutes)转换为最接近的四分之一小时(2.25)。有没有办法用typescript在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

typescript中是否有与上述c#转换为typescript的时间跨度等效的时间跨度?提前谢谢

没有特定于Angular/Typescript的方法来实现这一点,但您可以根据问题重写一些似乎很适合您的问题的函数。我主要是指这个问题,因为还不完全清楚你的价值是如何实现的。它是一个日期对象,还是一个字符串

如果您正在使用Javascript或Typescript执行任何稍微复杂的日期或时间操作,我建议使用矩.js。以下是typescript安装说明:


还有一个名为
moment round
的插件,它将完全按照您的建议执行:

我找到了下面的解决方案来满足我的要求。这对我来说就像预期的那样。但请确保您已了解边缘案例场景。享受吧

const roundedTime = (Math.round(input * 4) / 4 ).toFixed(2);
我累了,但没有为我工作,我得到的值为30,但预期值为25,让小时=2;分钟=36;m=(数学四舍五入(分钟/15)*15)%60;//m=30小时=分钟>52?(+小时===23?0:+小时):小时;const roundedTime=数字(h+'.+m*100);