C# 中的时间偏移量(以整分钟为单位)
本文关键字:分钟 为单位 时间 偏移量 | 更新日期: 2023-09-27 18:33:45
我有一个计算两次之间分钟数的方法。像这样:
DateTime UserLocalTime = DateTime.UtcNow.ConvertToUserTime(UserTimezoneID);
double TheOffset = (UserLocalTime - DateTime.UtcNow).TotalMinutes;
return TheOffset.ToString();
问题是它返回类似 119.83723 的东西,因为它正在计算分钟和秒等。
我该如何解决这个问题?恐怕有时它也会返回 120.11233,所以四舍五入也可能不完全有帮助。
感谢您的建议。
Update1: (int)(Math.Round((UserLocalTime - DateTime.UtcNow).总分钟数));返回 119。
更新2:我试过这个,看起来可以工作,但是当偏移量很奇怪时会失败(有时可能是5:30,答案应该是330分钟)
int TheOffset = (int)(Math.Round((UserLocalTime - DateTime.UtcNow).TotalHours));
TheOffset = TheOffset * 60;
- 你只想得到分钟而不是别的吗?只需使用
Minutes
而不是TotalMinutes
。 - 是否要获取总分钟数,但不获取其下的任何度量?使用
(int)TotalMinutes
.它会四舍五入。
恐怕有时它也会返回 120.11233,所以四舍五入也可能不完全有帮助。
你能澄清一下吗?四舍五入120.11233
将导致120
...我想这就是你想要的,对吧?
您可以使用:
- Math.Round() 获取最接近的整数
- Math.Floor() 获取小于或等于指定数字的最大整数。
-
Math.Ceiling() 获取大于或等于指定数字的最小整数值。
-
119,895 -> 楼层 = 119,天花板 = 120,圆形 = 120
-
119,175 -> 楼层= 119,天花板 = 120,圆形 = 119
将所需的函数应用于偏移量。
如果您需要天花板或地板,您可能应该反转负或正偏移时使用的函数。
所以,你决定你想要得到什么。