C# 从dateTime.TryParse获取自定义日期时间格式

C# 从dateTime.TryParse获取自定义日期时间格式,c#,datetime,tryparse,C#,Datetime,Tryparse,我从具有多种数据类型(字符串、日期时间、整数)的excel文件中读取单元格值。 在DateTime单元格中,可能有各种格式,如12/28/2013,8:30 使用此代码,(cell.ToString()是excel单元格值) 当我阅读12/28/2013时,它返回12/28/2013 12:00:00 AM 但是当我读到8:30时,它返回12/31/1899 12:00:00 AM 如您所见,我无法获得原始时间8:30 我做错什么了吗? 或者有没有办法解决这个问题 像这样试试看 string s

我从具有多种数据类型(字符串、日期时间、整数)的excel文件中读取单元格值。
在DateTime单元格中,可能有各种格式,如
12/28/2013
8:30

使用此代码,(
cell.ToString()
是excel单元格值)

当我阅读
12/28/2013
时,它返回
12/28/2013 12:00:00 AM

但是当我读到
8:30
时,它返回
12/31/1899 12:00:00 AM

如您所见,我无法获得原始时间
8:30

我做错什么了吗? 或者有没有办法解决这个问题

像这样试试看

string strDate = "8:00";
string format = "hh:mm";
DateTime res;
bool success = DateTime.TryParseExact(strDate, format, CultureInfo.InvariantCulture, DateTimeStyles.NoCurrentDateDefault, out res);

您可以使用
TryParseExact
并指定格式。有一个重载将
string[]
patterns数组作为参数:

你可以这样称呼它:

DateTime.TryParseExact(cell.ToString(), new [] { "M/d/yyyy", "hh:mm" }, CultureInfo.InvariantCulture, DateTimeStyles.NoCurrentDateDefault, out _dt);
您可能需要准备更多的模式,以确保它适用于所有输入格式

DateTime.TryParseExact(cell.ToString(), new [] { "M/d/yyyy", "hh:mm" }, CultureInfo.InvariantCulture, DateTimeStyles.NoCurrentDateDefault, out _dt);