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的主要内容,如果未能解决你的问题,请参考以下文章