c# - 如何检查从 Excel 解析的日期是正常格式(例如 01/01/2019)还是 OA 日期格式?
问题描述
我用OpenXml
值填充我的数据库。我的一个通用函数将每个单元格的value
(字符串)转换为适当的类型:
convertedValue = Convert.ChangeType(value, realType);
除非是约会,否则一切正常。有时OpenXml
会像这样读取日期单元格:01/01/2019
并且转换工作正常。有时它会转换为这样的数字:43466
. 我知道这个数字代表自 1900 年以来经过了多少天,但它破坏了我的功能。它无法将此数字转换为DateTime
.
我想为OA Dates
这样添加一个转换:
convertedValue = DateTime.FromOADate(doubleValue);
问题是如何检查从单元格中读取的值是否为OA Date
?
我正在考虑检查变量的长度value
并验证所有字符都是数字。有没有更好的方法来解决这个问题?
解决方案
使用 TryParseExact 确定格式。如果它没有完全按照提供的格式解析,它将返回 false。然后我们知道我们可以使用FromOADate
DateTime 中的方法
if(DateTime.TryParseExact(valueString, "mm/dd/yyyy", enUs, DateTimeStyles.None, out dateTime))
{
// Handle standard date format
}
推荐阅读
- python-3.x - Python 3 http.server:指定接受的内容类型?
- python - Python LDAP如何将搜索条目转换为字符串
- javascript - JavaScript 向 addEventListener 函数发送元素
- keras - keras.layers.Bidirectional 之后的参数个数不加倍?
- ionic-framework - 离子标签字体大小
- reactjs - 在哪里添加 aria-modal 属性?
- python - 使用 Python 2.6.9 在 Suse 11 上安装 pip
- macos - 带有 Virtualenv 和 Python 3.7 的 MacOSX 10.12.6 中的奇怪错误
- c# - C# 的 using 语句是否对输出参数调用 Dispose?
- python - 由于几个错误(macOS),python pip install 不起作用