【问题标题】:c# string date format from d.M.yyyy to yyyy-MM-ddc#字符串日期格式从d.M.yyyy到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 数据吗?

标签: c# mysql date datetime date-format


【解决方案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");
    

    【讨论】:

      猜你喜欢
      • 2018-07-31
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多