C# 检查给定日期时间是否在小时内最有效的方法是什么?
我有System.DateTime对象,我需要确认它在小时 那么,最有效的检查方法是什么 我想到的当前解决方案包括将对象转换为字符串,并获取分/秒部分,以查看它们是否等于零。如果有更简单的方法可以做到这一点,我将感谢您的建议 DateTime具有和属性,您可以直接检查,无需转换。如果与您相关,您可以对毫秒执行相同的操作。您可以使用以下命令:ifDateTime.Now.Minute==0&&DateTime.Now.Second==0&&DateTime.Now.millisond==0C# 检查给定日期时间是否在小时内最有效的方法是什么?,c#,C#,我有System.DateTime对象,我需要确认它在小时 那么,最有效的检查方法是什么 我想到的当前解决方案包括将对象转换为字符串,并获取分/秒部分,以查看它们是否等于零。如果有更简单的方法可以做到这一点,我将感谢您的建议 DateTime具有和属性,您可以直接检查,无需转换。如果与您相关,您可以对毫秒执行相同的操作。您可以使用以下命令:ifDateTime.Now.Minute==0&&DateTime.Now.Second==0&&DateTime.Now.millisond==0 编辑:
编辑:注释这里有一种编程方式:
DateTime min = new DateTime(value.Year, value.Month, value.Day, value.Hour, 0, 0);
DateTime max = min.AddMinutes(1);
if (min <= value && value < max)
这会故意降低精度,因此12:59:00.000与12:59:27.198相同。我个人的解决方案是创建一个新的日期时间,该时间为小时,并将其与我希望检查的日期时间进行比较,例如:
public bool IsOnHour(DateTime dateTime)
{
var onHour = dateTime.Date + TimeSpan.FromHours(dateTime.Hour);
return onHour == dateTime;
}
然后,我不需要检查分钟、秒、毫秒等。请尝试以下操作
var dt = new DateTime();
if (dt.Minute == 0 && dt.Second == 0 && dt.Millisecond == 0)
你可以以最高的精确度走这条路
if(date.Ticks % TimeSpan.TicksPerHour == 0)
毫秒呢。@DanielA.White做了一个更改Datetime.Second呢?毫秒呢?你不能像那样将这些比较链接在一起。它会将布尔值与int值进行比较,并且不会编译。为什么不使用dateTime.Date而不是dateTime-dateTime.TimeOfDay?可能是