如何检查对象StartDate是否在同一当前小时内

时间:2013-12-06 13:32:37

标签: c# entity-framework asp.net-mvc-4 razor

我的剃刀视图中有以下代码,我需要显示一个单词“New”,以防对象的StartDate等于当前小时(在一小时内添加): -

我尝试了以下内容,但即使刚刚添加了对象,也不会显示“新建”一词: -

@if (item.StartDate.Value.Date == DateTime.Today)
{
    @item.StartDate.Value.ToString("h:mm tt")</span>
    <span class="green b"> 
      If (item.StartDate.Value.TimeOfDay.Hours == 
              DateTime.Today.TimeOfDay.Hours)
      {
          New !
      }
    </span>
}

4 个答案:

答案 0 :(得分:2)

如果您想检查它是否在一小时内,那么以下内容适合您:

if (DateTime.Now - StartDate < TimeSpan.FromHours(1))

这假设StartDate在创建时已设置为DateTime.Now,而不是DateTime.Today,因为这样可以在00:00:00获取当天的时间。

例如:

<span>@item.StartDate.ToString("h:mm tt")</span>
@if (DateTime.Now - StartDate < TimeSpan.FromHours(1))
{
    <span class="green b">
        New !
    </span>
}

答案 1 :(得分:1)

您需要输出HTML:

If (item.StartDate.Value.TimeOfDay.Hours == DateTime.Today.TimeOfDay.Hours)
{
    <span class="green b">New !</span>
}

并删除span附近的其他if标记。

答案 2 :(得分:1)

<span class="green b"> 
If (item.StartDate.Value.TimeOfDay.Hours == DateTime.Today.TimeOfDay.Hours) 
{
   @:New !
}
</span>

您忘了在代码中添加@:。您也可以使用<text></text>

关于它的一个很好的参考:http://weblogs.asp.net/scottgu/archive/2010/12/15/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax.aspx

答案 3 :(得分:1)

您需要使用DateTime.Now而不是DateTime.Today。后者将小时,分钟和秒设置为零。也不需要调用TimeOfDay,DateTime.Now.Hour更简单。