需要使用Angular 5/6/7中的typescript将十进制小时.分钟转换为最接近的四分之一小时



我需要将十进制小时-分钟值(例如:2.36-hours.minutes(转换为最接近的四分之一小时(2.25(。有没有办法在Angular中使用typescript来实现这一点。输入将是2.36,我需要将其转换为2.25(其中.25是36分钟的一刻钟(。我在C#中使用了如下所示的时间跨度-

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中,是否有等效的TimeSpan?提前感谢!

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

如果你正在用Javascript或Typescript做任何稍微复杂的日期或时间,我会推荐Moment.js。以下是typescript安装说明:https://momentjs.com/docs/#/use-it/typescript/

还有一个名为moment-round的插件,它将完全按照您的建议执行:https://momentjs.com/docs/#/plugins/round/

我找到了以下解决方案来满足我的需求。它对我起到了预期的作用。但要确保你涵盖了边缘情况。享受

const roundedTime = (Math.round(input * 4) / 4 ).toFixed(2);