Pet*_*ger 100 .net c# datetime
有没有更好的.net方法来检查DateTime是否已经发生'今天'然后是下面的代码?
if ( newsStory.WhenAdded.Day == DateTime.Now.Day &&
newsStory.WhenAdded.Month == DateTime.Now.Month &&
newsStory.WhenAdded.Year == DateTime.Now.Year )
{
// Story happened today
}
else
{
// Story didn't happen today
}
Run Code Online (Sandbox Code Playgroud)
pyr*_*lus 201
if (newsStory.WhenAdded.Date == DateTime.Today)
{
}
else
{
}
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩.
Dav*_*wns 27
if( newsStory.Date == DateTime.Today )
{
// happened today
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*man 14
尝试
if (newsStory.Date == DateTime.Now.Date)
{ /* Story happened today */ }
else
{ /* Story didn't happen today */ }
Run Code Online (Sandbox Code Playgroud)
小智 12
我的解决方案
private bool IsTheSameDay(DateTime date1, DateTime date2)
{
return (date1.Year == date2.Year && date1.DayOfYear == date2.DayOfYear);
}
Run Code Online (Sandbox Code Playgroud)
正如Guillame在评论中建议的那样,比较Date属性的值:
newStory.Date == DateTime.Now.Date
Run Code Online (Sandbox Code Playgroud)
如果NewsStory也使用了DateTime,只需比较Date属性,就完成了.
然而,这取决于"今天"实际意味着什么.如果在午夜前不久发布了某些内容,则会在短时间后显示"旧".所以也许最好保持确切的故事日期(包括时间,最好是UTC)并检查是否已经过了不到24小时(或其他),这很简单(可以减去日期,这会给你一个带有TotalHours的TimeSpan或TotalDays属性).
小智 5
仅供参考,
newsStory.Date == DateTime.Today
将返回与编码相同的比较结果
newsStory == DateTime.Today
在哪里newsStory是一个DateTime对象
.NET足够聪明,可以确定您只想基于日期进行比较,并将其用于内部比较.不确定原因,实际上无法找到此行为的文档.
小智 5
您可以实现DateTime扩展方法.
为您的扩展方法创建新类:
namespace ExtensionMethods
{
public static class ExtensionMethods
{
public static bool IsSameDay( this DateTime datetime1, DateTime datetime2 )
{
return datetime1.Year == datetime2.Year
&& datetime1.Month == datetime2.Month
&& datetime1.Day == datetime2.Day;
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在您的代码的任何地方,您希望在哪里执行此测试,您应该包括使用:
using ExtensionMethods;
Run Code Online (Sandbox Code Playgroud)
然后,使用扩展方法:
newsStory.WhenAdded.IsSameDay(DateTime.Now);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64294 次 |
| 最近记录: |