下面的代码工作正常,只是想知道是否有更优雅的方式来实现同样的事情?下面的日期应该是有效的,除此之外的任何其他日期都不应该:
换句话说:它应该使用 1 位和 2 位数字天/月,并且它应该可以使用和不使用时间,包括或不包括秒。
var validDateTimeFormats = new[]
{
"d/MM/yyyy",
"d/MM/yyyy HH:mm",
"d/MM/yyyy HH:mm:ss",
"dd/M/yyyy",
"dd/M/yyyy HH:mm",
"dd/M/yyyy HH:mm:ss",
"d/M/yyyy",
"d/M/yyyy HH:mm",
"d/M/yyyy HH:mm:ss",
"dd/MM/yyyy",
"dd/MM/yyyy HH:mm",
"dd/MM/yyyy HH:mm:ss"
};
DateTime dateTime;
if (DateTime.TryParseExact(dateTimeStr, validDateTimeFormats,
CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime))
{
// My logic
}
最佳答案
感谢@Steve 的建议。不需要 dd 和 MM 组合。
最终代码:
var validDateTimeFormats = new[]
{
"d/M/yyyy",
"d/M/yyyy HH:mm",
"d/M/yyyy HH:mm:ss"
};
DateTime dateTime;
if (DateTime.TryParseExact(dateTimeStr, validDateTimeFormats,
CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime))
{
// My logic
}
关于C# DateTime.TryParseExact 带可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44122614/