c# - 转换为通用日期格式
问题描述
我正在尝试将 CSV 数据插入 SQL。
您可以在开始日期之前看到空间,我无法更改它,因为此 csv 使用 Azure 服务进行保护。
我收到如下所示的错误:
字符串未被识别为有效的日期时间。无法将 <7/20/2021 6:16> 存储在上次看到的列中。预期的类型是 DateTime。
我已经完成了转换现有数据格式的逻辑,如下所示
if (IsValidDateFormat("dd/MM/yyyy HH:mm", csvTable.Rows[i][LastSeen].ToString()))
{
dt.Rows.Add(csvTable.Rows[i][Computer].ToString()
, csvTable.Rows[i][LastSeen]);
}
else if (IsValidDateFormat("dd-MMM-yy HH:mm:ss", csvTable.Rows[i][LastSeen].ToString()))
{
dt.Rows.Add(csvTable.Rows[i][Computer].ToString()
, DateTime.ParseExact(csvTable.Rows[i][LastSeen].ToString() + ",531", "dd-MMM-yy HH:mm:ss,fff", System.Globalization.CultureInfo.InvariantCulture).ToString());
}
else if (IsValidDateFormat("M/dd/yyyy h:mm", csvTable.Rows[i][LastSeen].ToString()))
{
dt.Rows.Add(csvTable.Rows[i][Computer].ToString()
, csvTable.Rows[i][LastSeen]);
}
但是每天都有新的日期格式出现在 csv 中,因此每次出现新的日期格式时我都需要更改代码。
问题 1:有没有一种简单的方法可以为任何日期格式制作通用代码,而不是更改每种日期格式的代码?
问题2:由于有空格,我收到错误消息,无论如何我可以修剪日期吗?
有趣的是,我可以使用 Visual Studio 在 Windows10 笔记本电脑中导入数据而没有任何问题,但是我上面给出的错误仅在我通过 Windows Server 2012 机器中的 Windows 调度程序运行相同的部署的 exe 时出现
解决方案
当我改变线路时,问题得到了解决
DateTime.ParseExact(csvTable.Rows[i][LastSeen].ToString() + ",531", "dd/MM/yyyy HH:mm,fff", System.Globalization.CultureInfo.InvariantCulture).ToString()
并包含文化信息
if (IsValidDateFormat("dd/MM/yyyy HH:mm", csvTable.Rows[i][LastSeen].ToString()))
{
dt.Rows.Add(csvTable.Rows[i][Computer].ToString()
, **DateTime.ParseExact(csvTable.Rows[i][LastSeen].ToString() + ",531", "dd/MM/yyyy HH:mm,fff", System.Globalization.CultureInfo.InvariantCulture).ToString()**);
}
else if (IsValidDateFormat("dd-MMM-yy HH:mm:ss", csvTable.Rows[i][LastSeen].ToString()))
{
dt.Rows.Add(csvTable.Rows[i][Computer].ToString()
, DateTime.ParseExact(csvTable.Rows[i][LastSeen].ToString() + ",531", "dd-MMM-yy HH:mm:ss,fff", System.Globalization.CultureInfo.InvariantCulture).ToString());
}
else if (IsValidDateFormat("M/dd/yyyy h:mm", csvTable.Rows[i][LastSeen].ToString()))
{
dt.Rows.Add(csvTable.Rows[i][Computer].ToString()
, DateTime.ParseExact(csvTable.Rows[i][LastSeen].ToString() + ",531", "M/dd/yyyy h:mm,fff", System.Globalization.CultureInfo.InvariantCulture).ToString());
}
推荐阅读
- amazon-web-services - LambdaContext 对象没有属性 getRemainingTimeInMillis
- ruby-on-rails - 跳过 devise-secure_password password_has_required_content 模块
- database - 序列号与自我实现
- react-native - 在选项卡1上显示的活动指示器以及选项卡2(我只希望将其显示在选项卡2上 - 当卡2加载时)
- javascript - 制作密钥并将我的控制台日志结果附加到 html 文本框
- encryption - AES在cryptojs中加密和在python Crypto.Cipher中解密之间的兼容性问题
- gitlab - gitlab:如何在另一个项目中触发管道
- twig - 如何根据 URL 设置标题?
- android - Android webview 不显示 AMP-story-timeline 元素
- java - 如何在 1 秒内获取大型链表的大小?