我从具有多种数据类型(string,dateTime,int)的excel文件中读取单元格值
在DateTime单元格中,可能采用各种格式,例如12/28/2013
,8: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
我错了什么?
或者有任何方法来解决它?
答案 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);