You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC视图中时间差≥12小时判断逻辑失效求助

问题解决方法

你的代码核心问题有两个:

  • 时间差计算的类型错误:cont.TimeStamp - DateTime.Now得到的是TimeSpan对象,不能直接和整数12比较,需要用TotalHours属性获取小时数
  • 时间差的方向逻辑错误:如果cont.TimeStamp是记录创建/更新的时间戳(通常是过去的时间),那cont.TimeStamp - DateTime.Now会是负数,应该反过来计算当前时间与时间戳的差值

另外,在Razor视图的C#代码块(@if()内部)里,直接写>=即可,不需要转义成>=,转义是HTML里的写法,C#代码块不需要。

修正后的代码如下:

@foreach (var cont in contents)
{
    if (cont.IsArchive == null)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => cont.ToolList_Text)
            </td>
            <td>
                @Html.DisplayFor(modelItem => cont.GenericDropDownList_Text)
            </td>
            <td>
                @Html.DisplayFor(modelItem => cont.Comment_Text)
            </td>

            @if ((DateTime.Now - cont.TimeStamp).TotalHours >= 12)
            {
                <td>
                    @Html.DisplayFor(modelItem => cont.TimeStamp)
                </td>
            }
            // 可选:避免表格结构错乱,条件不满足时渲染空单元格
            else
            {
                <td></td>
            }

            <td class="text-center">
                <div style="display: inline-flex;">
                    <button type="submit" value="Edit" class="btn btn-info" id="edit" name="edit">Edit</button>
                    &nbsp;
                    <button type="submit" value="Archive" class="btn btn-danger" id="archive" name="archive">Archive</button>
                </div>
            </td>
        </tr>
    }
}

关键说明:

  1. 时间差计算:(DateTime.Now - cont.TimeStamp).TotalHours会返回两个时间之间的小时数(带小数),比如12.5表示12小时30分钟
  2. 逻辑正确性:如果需求是“时间戳距离现在已经超过12小时”,用上面的写法;如果是“时间戳在12小时之后(未来时间)”,则改成(cont.TimeStamp - DateTime.Now).TotalHours >=12
  3. 表格结构完整性:建议加上else分支渲染空的<td>,否则当条件不满足时,表格列数会少一列,导致布局错乱
  4. 符号写法:Razor的C#代码块中直接使用>=,不需要转义,转义字符&gt;=仅用于HTML内容中显示符号时

内容的提问来源于stack exchange,提问作者Donnie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 09:11:14