我在视图中显示Warrenty_Expires
的产品,但有时Warrenty_Expires包含与此1753-01-01 00:00:00.000
完全相同的值,我想说如果Warrenty_Expires
包含此值不应在我的视图中显示谁能帮助我或为我指明正确的方向:)
这是我的最终结果,但它不起作用,仍然显示此值(1753-01-01)。
查看:
if (Field.WarrentyExpiress.HasValue) //Check for null value
{
//Check if Warrenty contains this value(1753-01-01)
if (Field.WarrentyExpiress.Value.ToString().Contains("1753-01-01"))
{
<td>Not available</td>
}
else
{
<td>@Field.WarrentyExpiress.Value.ToString("MM/dd/yyyy")</td>
}
}
else
{
<td>Not available</td>
}
型号:
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
public DateTime Warrenty_Expires { get; set; }
ViewModel:
public DateTime? WarrentyExpiress { get; set; }
答案 0 :(得分:0)
不要弄乱DateTime
的字符串表示形式,只需与DateTime
结构的另一个实例进行比较:
if (Field.WarrentyExpiress.Value == new DateTime(1753, 1, 1).Date)
{
<td>Not available</td>
}
顺便说一句,有趣的是:Why 1753?
答案 1 :(得分:0)
如果您想使用多语种怎么办?我将使用DateTime的Date属性。
if (Field.WarrentyExpiress.Value.Date == new DateTime(1753,1,1))
{
....
}
当某事是区域性依赖时,切勿比较ToString()
。
答案 2 :(得分:0)
除了这种特殊情况外,1753年几乎是不可能的,所以您甚至可以这样做:
if (Field.WarrentyExpiress.Value.Year == 1753)
答案 3 :(得分:0)
请勿尝试通过字符串处理来执行此操作。字符串大约是您可以使用的第二最差的格式。
找出1753-01-01 00:00:00.000
代表的DateTime.Ticks的实际值。 DateTime仅存储自0001年1月1日00:00:00.000起的滴答数。其他所有值-日,月,年,字符串表示形式-只是该Tick值的解释。
一旦知道了滴答计数是多少,就可以检查小于等于滴答的计数并将其过滤掉。