mar*_*dok 1 .net c# datetime datetime-format
我想将字符串日期解析为DateTime但忽略时间。我的预期日期格式M/d/yyyy是3/29/2018(不带前导零)。问题是字符串可以有或没有时间部分,时间可以有我无法预测的不同格式。
var inputDateString = "12/31/2017 12:00:00 AM" // false, but I want to parse
var inputDateString = "12/31/2017" // true
DateTime.TryParseExact(inputDateString, "M/d/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out var parsedDate);
Run Code Online (Sandbox Code Playgroud)
有没有办法解析只有特定日期格式的日期字符串并忽略时间?
有一个重载TryParseExact允许您传入多种格式。如果您事先知道预期的格式,则可以使用此重载:
void Main()
{
string[] validFormats = {"M/d/yyyy", "M/d/yyyy hh:mm:ss tt"};
var inputDateString1 = "12/31/2017 12:00:00 AM"; // false, but I want to parse
var inputDateString2 = "12/31/2017"; // true
DateTime.TryParseExact(inputDateString1, validFormats, CultureInfo.InvariantCulture, DateTimeStyles.None, out var dt1);
DateTime.TryParseExact(inputDateString2, validFormats, CultureInfo.InvariantCulture, DateTimeStyles.None, out var dt2);
}
Run Code Online (Sandbox Code Playgroud)
然后,您只能使用该Date属性获取日期部分。