将DateTime和日期比较为字符串

时间:2016-01-27 10:35:04

标签: c# string datetime

我将DateTime和date的值作为字符串。字符串日期可以是未知格式(在我的情况下为1:2 "MMM dd yyyy""dd MMM")。我需要检查日期是否相等。

除了尝试使用第一种和第二种格式解析字符串日期以及是否返回DateTime而不是与DateTime类型进行比较之外,还有其他解决方案吗?

1 个答案:

答案 0 :(得分:5)

当然。您可以使用DateTime.ParseExact方法。该函数有几个重载。

其中一个重载是ParseExact(String, String[], IFormatProvider, DateTimeStyles)

  

将指定的日期和时间字符串表示形式转换为它   DateTime等效使用指定的格式数组,   文化特定的格式信息和风格。格式   字符串表示必须至少匹配一种指定的格式   完全或抛出异常。

string[] formats= {"MMM dd yyyy", "dd MMM"};

var dateValue = DateTime.ParseExact(dateString,
                   formats, 
                   CultureInfo.InvariantCulture,
                   DateTimeStyles.None);

请记住,字符串表示形式的格式必须至少与指定格式中的一种格式匹配,否则会引发异常。如果您不想明确使用try/catch块,那么您的最佳选择将是TryParseExact方法。如果参数转换成功,将返回true;否则,false

DateTime dateValue;

Nullable<DateTime> result = DateTime.TryParseExact(dateString, formats, 
          CultureInfo.InvariantCulture,
          DateTimeStyles.None, 
          out dateValue)) ? 
    dateValue :
    (DateTime?)null;