C# 如果将HH:MM:SS显示为HH:MM,最好将秒截断或四舍五入到最接近的分钟?

C# 如果将HH:MM:SS显示为HH:MM,最好将秒截断或四舍五入到最接近的分钟?,c#,sql,sql-server,datetime,datetime-format,C#,Sql,Sql Server,Datetime,Datetime Format,当源时间具有HH:MM:SS精度时,对于如何将时间显示为HH:MM,是否有标准或公认的最佳实践?秒应该被截断还是四舍五入到最接近的分钟 在社交方面,如果我看着一个数字时钟,看到它是4:00:45,我永远不会告诉别人它是4:01。但我不知道这个约定是通用的还是也适用于计算 此外,四舍五入到最接近的分钟可能会产生意外行为,例如,如果四舍五入导致小时或日期更改。这不一定适用于我们今天处理的特定用例,但我可以很容易地想象另一个用例,其中“1月销售”列表包括31 Jan 23:59:59的销售,该销售将显

当源时间具有
HH:MM:SS
精度时,对于如何将时间显示为
HH:MM
,是否有标准或公认的最佳实践?秒应该被截断还是四舍五入到最接近的分钟

在社交方面,如果我看着一个数字时钟,看到它是4:00:45,我永远不会告诉别人它是4:01。但我不知道这个约定是通用的还是也适用于计算

此外,四舍五入到最接近的分钟可能会产生意外行为,例如,如果四舍五入导致小时或日期更改。这不一定适用于我们今天处理的特定用例,但我可以很容易地想象另一个用例,其中“1月销售”列表包括
31 Jan 23:59:59
的销售,该销售将显示为
1-Feb 00:00

如果上下文与答案相关,则此用例是一个SQL Server应用程序,它将
datetime
转换为
smalldatetime
,SQL Server将转换为最接近的分钟数。在C#web应用程序中,结果将显示为
HH:MM
。转换发生在我们现在无法更改的遗留代码中,但我们可以强制截断秒数而不是舍入


但我不确定我们是否应该这样做

除非它对父对象的排序至关重要,否则我真的不想麻烦。如果你不需要时间;它们可以被视为低优先级。我个人喜欢它,因为我喜欢精度,即使是分形


如果你意识到它会导致意外行为;任何解释数据的人都应该对此负责,但您可以在代码中添加一条注释,说明这可能导致数据丢失,以便他们知道。一般来说,日期和时间最好四舍五入


对我来说,“1周前”意味着“至少7天,但不到14天”。《时代》杂志也有类似的想法。

有趣……老实说,我从来没有真正想过这一点;我想我们之所以“四舍五入”更多的是因为基础表示基本上是一个大的“ollong”值,我们将其“四舍五入”到特定的精度。Truncate。想想更大的规模。如果你只显示月份和年份,你会因为12月已过了一半而从“2012年12月”到“2013年1月”取整吗?你提供自己的答案,如果你不以4:00:45为单位,为什么以23:59:59为单位。这个时间仍然是23点59分。编写一个显示三个时钟的程序。其中一个通常显示小时分秒。一个显示小时和分钟,截断。其中一个显示小时和分钟,四舍五入到最近。观察几分钟,你很快就会明白为什么截断优于舍入。顺便说一句,Windows中曾经有一个漏洞,在极不可能的情况下,“舍入到最近的一秒”算法可能会舍入两天错误。如果您决定使用舍入算法,请小心。