如果包含(1753-01-01)这样的格式/值,如何不显示日期时间的值-MVC

时间:2018-11-15 08:57:55

标签: c# asp.net-mvc date datetime

我在视图中显示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; }

4 个答案:

答案 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值的解释。

一旦知道了滴答计数是多少,就可以检查小于等于滴答的计数并将其过滤掉。