【发布时间】:2022-01-17 21:58:18
【问题描述】:
我正在显示不同活动的时间表。
有些事件是多天的,所以我想根据情况显示以下可能的显示:
1 月 25 日
1 月 25 日至 28 日
1 月 25 日至 2 月 2 日
我无法正常工作的代码是这样的:
@Html.ValueFor(modelItem => item.STARTTIME, "{0:MMM d}")
@if (@Html.ValueFor(modelItem => item.ENDTIME, "{0:MMM d}") != @Html.ValueFor(modelItem => item.STARTTIME, "{0:MMM d}"))
{
@: -
if (@Html.ValueFor(modelItem => item.ENDTIME, "{0:MMM}") != @Html.ValueFor(modelItem => item.STARTTIME, "{0:MMM}"))
{
@Html.ValueFor(modelItem => item.ENDTIME, "{0:MMM d}")
}
else
{
@Html.ValueFor(modelItem => item.ENDTIME, "{0: d}")
}
}
似乎我错过了一些简单的东西,切我无法弄清楚。它不会出错,它只是始终显示 1 月 25 日至 2 月 2 日选项,无论结束日期如何。
【问题讨论】:
-
这是很多(显然是不必要的)
@Html.ValueFor()电话。为什么不直接使用 DateTime 值? -
@jpieps,请解释您希望代码按顺序执行的场景,而不是显示代码和输出。您何时只想查看开始/结束日期?也尝试使用
Model.ENDTIME或Model.STARTTIME。此外,使用日期时间对象进行比较,而不是解析字符串并比较字符串。这可能会产生意想不到的结果。 -
谢谢——更清楚一点,STARTTIME 是数据库/模型中的 DATETIME 字段,而 ENDTIME 是一个字段。显示的是事件列表。有些活动是单日的,这很容易。有些活动是多天的,这也很容易。但是一些多日活动在一个月内开始并在不同的月份结束。我希望显示按我列出的那样显示,我不希望它显示 1 月 7 日 - 1 月 8 日或 1 月 7 日 - 1 月 7 日,或 1 月 7 日 - 1 日(如果 1 是在 2 月)。
-
我需要比较的不是整个 DATETIME,而是首先查看它是否在同一天开始/结束的天数,然后查看它是否跨越一个月。
标签: c# .net model-view-controller razor