Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查给定日期时间是否在小时内最有效的方法是什么?_C# - Fatal编程技术网

C# 检查给定日期时间是否在小时内最有效的方法是什么?

C# 检查给定日期时间是否在小时内最有效的方法是什么?,c#,C#,我有System.DateTime对象,我需要确认它在小时 那么,最有效的检查方法是什么 我想到的当前解决方案包括将对象转换为字符串,并获取分/秒部分,以查看它们是否等于零。如果有更简单的方法可以做到这一点,我将感谢您的建议 DateTime具有和属性,您可以直接检查,无需转换。如果与您相关,您可以对毫秒执行相同的操作。您可以使用以下命令:ifDateTime.Now.Minute==0&&DateTime.Now.Second==0&&DateTime.Now.millisond==0 编辑:

我有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?可能是