我将DateTime和date的值作为字符串。字符串日期可以是未知格式(在我的情况下为1:2 "MMM dd yyyy"
或"dd MMM"
)。我需要检查日期是否相等。
除了尝试使用第一种和第二种格式解析字符串日期以及是否返回DateTime而不是与DateTime类型进行比较之外,还有其他解决方案吗?
答案 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;