我需要将十进制小时-分钟值(例如: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);