我正在读取c#中的平面文件中的文本,需要测试某些值是否为日期。它们可以是YYYYMMDD格式或MM / DD / YY格式。在.Net中执行此操作的最简单方法是什么?
答案 0 :(得分:29)
string[] formats = {"yyyyMMdd", "MM/dd/yy"};
var Result = DateTime.ParseExact(input, formats, CultureInfo.CurrentCulture, DateTimeStyles.None);
或
DateTime result;
string[] formats = {"yyyyMMdd", "MM/dd/yy"};
DateTime.TryParseExact(input, formats, CultureInfo.CurrentCulture, DateTimeStyles.None, out result);
ParseExact和TryParseExact上的MSDN文档中的详细信息。
答案 1 :(得分:3)
答案 2 :(得分:3)
您也可以尝试使用TryParseExact设置精确格式。 方法,这里的文档:http://msdn.microsoft.com/en-us/library/ms131044.aspx
e.g。
DateTime outDt;
bool blnYYYMMDD =
DateTime.TryParseExact(yourString,"yyyyMMdd"
,CultureInfo.CurrentCulture,DateTimeStyles.None
, out outDt);
我希望我帮助你。
答案 3 :(得分:0)
你也可以做Convert.ToDateTime
不确定两者的优点
答案 4 :(得分:0)
如果失败,使用TryParse不会抛出异常。此外,TryParse将返回True / False,表示转换成功。
...问候
答案 5 :(得分:0)
您可以使用TryParse方法检查有效性并同时解析。
DateTime output;
string input = "09/23/2008";
if (DateTime.TryParseExact(input,"MM/dd/yy", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out output) || DateTime.TryParseExact(input,"yyyyMMdd", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out output))
{
//handle valid date
}
else
{
//handle invalid date
}