似乎有几种可能的方法来确定给定的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
- 所有其他属性都被计算).
我检查(使用C#作为示例):
bool isMidnight = value.TimeOfDay.Ticks == 0;
IMO,这比使用FromHours
等更容易,并且不涉及任何额外的乘法(因为Ticks
定义了TimeSpan
- 所有其他属性都被计算).
这是一个微优化,任何一种方法都可以正常工作.
无论如何,我认为这是最好的表现:
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
要看.你想要检查正好是午夜到第二个,还是只是午夜时分?
午夜时分
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
对于纯粹的简单,正好是午夜,您可以使用您的示例.然而,这将包括最多毫秒的检查,这可能不是你想要的.