首页 > 解决方案 > 转换为通用日期格式

问题描述

我正在尝试将 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 时出现

标签: c#.netdatetimec#-4.0

解决方案


当我改变线路时,问题得到了解决

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());

                    }

推荐阅读