【问题标题】:How to substract and round times如何减去和舍入时间
【发布时间】:2012-01-11 12:51:55
【问题描述】:

问:

如果我有以下格式.ToString("H:m"); 的两个句点,我想首先从第一个句点中 减去 结束句点,然后 round 结果。就像下面的例子:

13:00 ---->第一节课。

13.45 ---->最后一期。

结果45 ---->四舍五入为60

例如,如果结果 = 75,则四舍五入为 120

【问题讨论】:

  • 这只是一种非常复杂的方式来表示您想要四舍五入到最近的分钟吗?
  • 您调用“ToString”的原始类型是什么?为什么你不能使用这些?
  • 原文是string
  • @just_name:他的意思是 .ToString("H:m") 方法被调用的对象的类型是什么?它显然不是字符串,因为它不支持您传递的格式。
  • 那就这么说吧。您提出问题的方式非常令人困惑。

标签: c# asp.net datetime time datetime-format


【解决方案1】:

类似的东西

 var t1 = TimeSpan.Parse("13:00").TotalMinutes;
 var t2 = TimeSpan.Parse("13:45").TotalMinutes;
 var round = (1 + ((int)(t2 - t1) / 60)) * 60; //Assuming t2 is always greater than t1

希望这就是你要找的。​​p>

【讨论】:

  • 这行得通,非常感谢。你能解释一下方程式吗?
  • t1 & t2 是double,因此将 (t2 - t1) 转换为 int,现在如果这是 45,除以 60 将得到结果 0,而对于 45,你想要 60。现在如果 t2 - t1 为 75,则除法为 1,并且 75 将四舍五入为 120。
【解决方案2】:

您可以使用 datetime.parse 获取第一个和最后一个时期的两个日期时间对象 然后使用 lastperiod.subtract(firstperiod) 减去它们 这将返回一个时间跨度对象 然后,您可以根据需要对其进行四舍五入

【讨论】:

  • -1 DateTime 可以工作,但 TimeSpan 更合适,因为 @just_name 有 "H:m" 格式的字符串。
  • 好吧,你可以使用 datetime.parseexact()。在否决队友之前,你应该考虑一下
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-12
  • 1970-01-01
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多