gpt4 book ai didi

c# - 在 C# 中比较两个 DateTimes 是否相等的最佳方法是什么...但仅限于一定的精度?

转载 作者:太空狗 更新时间:2023-10-29 20:47:13 27 4
gpt4 key购买 nike

我有两个日期时间,一个来自时间戳,另一个是我用代码生成的。我需要测试他们的平等性,并且很乐意在没有太多表达的情况下做到这一点。这是我的两个约会的示例:

DateTime expireTimeStampUTC = 
DateTime.Parse(UTCValueFromDatabase));
DateTime expectedExpireTime =
DateTime.UtcNow.AddHours(NumberOfExpectedHoursInConfig);

这个测试的精度太高了:

if (expireTimeStampUTC.Equals(expectedExpireTime)){}

我不在乎它们是否精确到秒,只在乎小时。

这可能是做这样的复合的最佳解决方案吗:

if (expireTimeStampUTC.Date.Equals(expectedExpireTime.Date))
{
if (!expireTimeStampUTC.Hour.Equals(expectedExpireTime.Hour))
{
pass = false;
}
}

我不是最有 C# 经验的人...有什么优雅的方法可以做到这一点吗?

最佳答案

如果您遇到的问题是因为它们是数据库类型,您可以转换为该类型并在那里进行比较,我们在大约 1/3 的数据库保存中损失/增加了大约 1 毫秒转换为 SQLDateTimes。

如果不是,比较你真正关心的单位:

DateTime dt1 = DateTime.UtcNow;
DateTime dt2 = DateTime.UtcNow.AddMinutes(59); // or 1 or 61 for test values;

// if the dates are in the same hour (12:10 == 12:50, 1:58 != 2:02)
if(dt1.Hour == dt2.Hour) // result

或者如果你关心他们在一个小时的时间跨度内

// if the dates are within one hour of each other (1:58 == 2:02, 3:30 != 4:45)
if((dt1 - dt2).Duration() < TimeSpan.FromHours(1)) // result

此处减去日期会生成一个时间跨度,持续时间是“绝对值”,然后我们根据我们关心的单位 (FromHours) 明确创建限制并进行比较。

最后一行是我能想到的在特定时间跨度内实现平等的最干净的方式。

关于c# - 在 C# 中比较两个 DateTimes 是否相等的最佳方法是什么...但仅限于一定的精度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/613041/

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