c#字符串日期格式从d.M.yyyy到yyyy-MM-dd

Posted

技术标签:

【中文标题】c#字符串日期格式从d.M.yyyy到yyyy-MM-dd【英文标题】:c# string date format from d.M.yyyy to yyyy-MM-dd 【发布时间】:2014-07-05 18:17:15 【问题描述】:

请问,如何将我的 csv 导入中的日期字符串转换为网格和 mysql 数据库?

我以 dd.MM.yyyy 格式导入日期,我必须为 mysql 数据库格式化 yyyy-MM-dd。

我的数据网格行代码是

dataGridView1.Rows.Add(counter, "1", lineIn[0], ControlPrice, lineIn[3]);

lineIn[0] 是日期字符串... 谢谢

【问题讨论】:

您确定 lineIn[0] 的日期有效且不为空吗?如果要将 lineInl[0] 传递给任何函数,我假设它是一个对象,因此如果要使用 DateTime.ParseExact,则需要先转换为字符串。请参阅下面的示例 你能在上面的例子中加入一些 CSV 数据吗? 【参考方案1】:

最好使用DateTime.ParseExact

根据您的示例,您需要在传递给函数之前转换为字符串。

您还应该考虑如果 CSV 中有无效日期会发生什么,您想如何处理?还是您总是希望有一个日期并希望停止处理?

这是我用来测试的 LinqPad 示例:

object date = "12.2.2014";
var result = DateTime.ParseExact(date.ToString(), "d.M.yyyy", null).ToString("yyyy-MM-dd");
Console.WriteLine(result);

有关更多信息,请参阅此 SO 帖子:DateTime Conversion and Parsing DateTime.Now.ToString(“MM/dd/yyyy hh:mm:ss.fff”)

【讨论】:

【参考方案2】:

以防万一您的记录可能为空白,在解析为日期时间时会出错,因此我添加了一个条件来检查空白,然后将其转换为所需的格式。

If(lineIn[0].ToString() != "")

    dataGridView1.Rows.Add(counter, "1", DateTime.ParseExact(lineIn[0].ToString(), "dd.MM.yyyy", null).ToString("yyyy-MM-dd"), ControlPrice, lineIn[3]);

else

    dataGridView1.Rows.Add(counter, "1", "", ControlPrice, lineIn[3]);

【讨论】:

谢谢,但系统提示 =“字符串未被识别为有效的日期时间。” @kubis,能否请您展示一些在 lineIn[0] 中返回的测试数据 这里是从 csv 导入数据... 1.2.2014,334.00 Kč,,Jana vyplata 我也认为有些日期一定是空白的,我已经修改了我的答案以检查空白,请看看它是否有效 @rene,我在上面的评论中提到,错误可能是由于某些输出中的空白而出现的,所以我修改了答案【参考方案3】:

这应该适合你:

        var parsedDate = DateTime.ParseExact(lineIn[0], "dd.MM.yyyy", null);
        string dateStringInAnotherFormat = parsedDate.ToString("yyyy-MM-dd");

【讨论】:

以上是关于c#字符串日期格式从d.M.yyyy到yyyy-MM-dd的主要内容,如果未能解决你的问题,请参考以下文章

Access中的日期格式如何转换?

正则表达式在javascript中重新排序部分日期

更改数据框日期列的日期格式[重复]

DateTime.Parse 美国日期格式 C#

从 Jquery 到 C# Web API 传递和处理英国日期格式

R笔记日期处理