我使用OpenXml
用值填充我的数据库。我的通用函数之一将每个单元格的value
(字符串)转换为适当的类型:
convertedValue = Convert.ChangeType(value, realType);
一切正常,除非有个约会。有时OpenXml
会像这样读取日期单元:01/01/2019
并且转换正常。有时,它会转换成这样的数字:43466
。我知道这个数字代表自1900年以来经过了多少天,但它破坏了我的功能。无法将此数字转换为DateTime
。
我想像这样为OA Dates
添加一次转化:
convertedValue = DateTime.FromOADate(doubleValue);
问题是如何检查从单元格读取的值是OA Date
?
我当时正在考虑检查value
变量的长度,并验证所有字符都是数字。有解决这个问题的更好方法吗?
答案 0 :(得分:1)
使用TryParseExact确定格式。如果未完全按照提供的格式进行解析,则它将返回false。然后,我们知道可以使用DateTime中的FromOADate
方法
if(DateTime.TryParseExact(valueString, "mm/dd/yyyy", enUs, DateTimeStyles.None, out dateTime))
{
// Handle standard date format
}