gpt4 book ai didi

C# DateTime 比较精度和舍入

转载 作者:行者123 更新时间:2023-11-30 13:18:19 25 4
gpt4 key购买 nike

我有两个约会对象。一种由用户提供,精确到秒,另一种来自数据库,精确到报价水平。这意味着当它们都代表 13/11/2009 17:22:17(英国日期)

userTime == dbTime 

返回错误

刻度值为 633937297368344183 和 633937297370000000。

为了解决这个问题,我使用代码

userTime = new DateTime(
userTime.Year,
userTime.Month,
userTime.Day,
userTime.Hour,
userTime.Minute,
userTime.Second);

dbTime = new DateTime(
dbTime.Year,
dbTime.Month,
dbTime.Day,
dbTime.Hour,
dbTime.Minute,
dbTime.Second);

有没有更优雅的方式来实现这一点?

最佳答案

最明显的重构是删除重复:

public static DateTime TruncateToSecond(DateTime original)
{
return new DateTime(original.Year, original.Month, original.Day,
original.Hour, original.Minute, original.Second);
}

...
if (TruncateToSecond(userTime) == TruncateToSecond(dbTime))
...

你很可能会写:

if (userTime.Ticks / TimeSpan.TicksPerSecond
== dbTime.Ticks / TimeSpan.TicksPerSecond)
...

相信这会奏效,因为 tick 0 是在一秒的开始。

当然,您应该注意所有这些的时区方面。您可能需要考虑使用 DateTimeOffset相反。

关于C# DateTime 比较精度和舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1763434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com