当前位置:  开发笔记 > 编程语言 > 正文

确定System.DateTime是否为午夜的最佳方法是什么?

如何解决《确定System.DateTime是否为午夜的最佳方法是什么?》经验,为你挑选了3个好方法。

似乎有几种可能的方法来确定给定的System.DateTime是否代表午夜.各自的优点和缺点是什么?是否比其他人更具可读性或表现更好?

编辑:我认为可读性比性能更重要,直到分析显示存在问题.这就是为什么我问两个问题.

例1

Public Function IsMidnight(ByVal value As Date) As Boolean
    Return value.TimeOfDay = TimeSpan.FromHours(0)
End Function

例2

Public Function IsMidnight(ByVal value As Date) As Boolean
    Return value.CompareTo(value.[Date]) = 0
End Function

Marc Gravell.. 45

我检查(使用C#作为示例):

bool isMidnight = value.TimeOfDay.Ticks == 0;

IMO,这比使用FromHours等更容易,并且不涉及任何额外的乘法(因为Ticks 定义TimeSpan- 所有其他属性都被计算).



1> Marc Gravell..:

我检查(使用C#作为示例):

bool isMidnight = value.TimeOfDay.Ticks == 0;

IMO,这比使用FromHours等更容易,并且不涉及任何额外的乘法(因为Ticks 定义TimeSpan- 所有其他属性都被计算).


对于代表*true*午夜的所有时间,它将评估为真.显然,你不会在`DateTime.Now`上调用它,但是它按照规定执行了...

2> Guffa..:

这是一个微优化,任何一种方法都可以正常工作.

无论如何,我认为这是最好的表现:

Public Function IsMidnight(ByVal value As Date) As Boolean
   Return value.TimeOfDay.Ticks = 0
End Function

如果你想要可理解的代码,也许这是最好的:

Public Function IsMidnight(ByVal value As Date) As Boolean
   Return value.TimeOfDay = TimeSpan.Zero
End Function



3> JaredPar..:

要看.你想要检查正好是午夜到第二个,还是只是午夜时分?

午夜时分

Public Function IsMidnightHour(ByVal date as Date) As Boolean
  return date.Hour = 0
End Function

午夜时分

Public Function IsMidnightHourAndMinute(ByVal date as Date) As Boolean
  return date.Hour = 0 AndAlso date.Minute = 0
End Function

对于纯粹的简单,正好是午夜,您可以使用您的示例.然而,这将包括最多毫秒的检查,这可能不是你想要的.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有