从DateTime.TryParse获取自定义dateTime格式

时间:2013-12-27 06:14:14

标签: c# datetime tryparse

我从具有多种数据类型(string,dateTime,int)的excel文件中读取单元格值 在DateTime单元格中,可能采用各种格式,例如12/28/20138:30

使用此代码,(cell.ToString()是excel cell value)

DateTime _dt;
if (DateTime.TryParse(cell.ToString(), out _dt))
{
   //
} 

当我阅读12/28/2013时,它会返回12/28/2013 12:00:00 AM 但是当我阅读8:30时,它会返回12/31/1899 12:00:00 AM 如您所见,我无法获得原始时间8:30 我错了什么? 或者有任何方法来解决它?

2 个答案:

答案 0 :(得分:2)

您可以使用TryParseExact并指定格式。将string[]模式数组作为参数进行重载:

DateTime.TryParseExact Method (String, String[], IFormatProvider, DateTimeStyles, DateTime)

您可以这样称呼它:

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

您可能需要Custom Date and Time Format Strings来准备更多模式,以确保它适用于您的所有输入格式。

答案 1 :(得分:1)

试试这个

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