我有一张带有一些数据的Excel表格。在其中我有一个日期列。当我阅读日期列的Excel表格时,它返回一个不正确的日期(日期格式月/日/年)。
以下是Excel工作表中日期值的示例
01/01/2014
从C#中读取该日期值:
1/1/2014
但它正确地解析了日期05/24/2015
。
因此,当我TryParseExact
为有效日期时,它总是返回false。有没有什么好的解决方案可以解决这个问题?
更新
if (!DateTime.TryParseExact(row["ColoumnNo"].ToString(), "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date)) <br>
{
//code
}
答案 0 :(得分:0)
当您查看Excel工作表时,您会看到以下格式:MM / dd / yyyy。您的日期只是由excel中的格式化程序以该格式显示。在引擎盖下它是一种日期类型。当您在c#中将日期作为字符串读取时,您将从日期类型M / d / yyyy中获得以下格式。因此,您必须将TryParse的掩码更改为:“M / d / yyyy”。您可以直接从Excel工作表中更好地读取该值作为日期,如果您更改了您的文化,您将从excelsheet中读取其他日期格式。
答案 1 :(得分:0)
正如其他人所暗示的那样,通过信任Excel告诉您是否有约会,您可以更好地避免这个问题。 Range.Value
的类型为object
,如果Excel将内容识别为日期,则会返回DateTime
。所以你的代码可以写成:
var value = row[".."].Value;
if (value is DateTime)
{
var date = (DateTime)value;
//code
}