【问题标题】:How to change the date format in C#如何在 C# 中更改日期格式
【发布时间】:2014-03-03 11:52:36
【问题描述】:

如何在 c# 中更改日期格式,我正在从数据库中检索信息,在数据库中,日期格式存储在“dd/mm/yyyy”中,但是当我将这个日期输入我的表单时,它显示错误,该字符串不是有效的日期时间格式。例如“2/13/2014”,当我检索此日期时出现错误,我已尝试此代码

 string orderd = row.Cells[1].Value.ToString();
                    DateTime dt = Convert.ToDateTime(lbl_date.Text);
                     DateTime orderdt = Convert.ToDateTime(orderd);

如何在检索时转换此日期。,

  string orderd = row.Cells[1].Value.ToString();
   DateTime orderdt = Convert.ToDateTime(orderd);

此代码也出现错误,row.cells[1].value 是我从 gridview 获取值,然后我正在转换为日期时间。但显示“字符串未被识别为有效的日期时间”。

【问题讨论】:

  • 数据库中的列类型是什么? Date?或varchar?
  • 试着把 Convert.ToDateTime( [value here]);
  • 你的代码有-,而样本有-
  • “2/13/2014”是“mm/dd/yyyy”,而不是“dd/mm/yyyy”
  • 请注意,如果数据库中有日期或日期时间字段,则根本不需要进行任何解析。

标签: c# winforms date


【解决方案1】:

如果你有一个dd/MM/yyyy 格式的日期字符串,那么它肯定不会解析为yyyy-MM-dd,所以你看到的错误是正确的。

认为您正在寻找的是以当前格式解析日期,即

DateTime orderdt = DateTime.ParseExact(orderd, "dd/MM/yyyy",
    System.Globalization.CultureInfo.InvariantCulture);

但是显示日期为yyyy-MM-dd

orderdt.ToString("yyyy-MM-dd")

【讨论】:

  • :'string.ToString(System.IFormatProvider)' 的最佳重载方法匹配有一些无效参数 - 我收到此错误。,当我使用 DateTime orderdt = orderd.ToString("yyyy -MM-dd");这段代码,
  • @Sarvan after ParseExact orderdt 应该是 DateTime...而不是 string
【解决方案2】:

看看 MSDN。本文档包括许多格式化日期的方法。

http://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx

【讨论】:

  • 是的,但理想情况下根本不需要它。请参阅问题中的 cmets - 值得完全删除不必要的字符串转换,IMO。
  • 是的,如果该列是日期时间类型,则不需要对其进行转换,这是正确的。但是,它必须是非日期时间列。这就是为什么我认为该链接可能会帮助他。
  • 我不会假设 - 人们通常会在完美的 DateTime 值上调用 ToString,然后尝试解析它们 :( 如果数据库字段确实是 varchar,我会尝试先解决这个问题...
  • 我同意你的看法。如果该列是 varchar,我也同意更改它,因为它是糟糕的设计。但是有些人在软件开发方面没有相同的经验,所以他们当时就迈出了一步。这就是为什么我还发布了该链接,而不是仅仅写一个答案。该链接包含比“解析和转换日期时间值”更多的信息。希望你能理解我。
  • 不仅仅是提供链接,it would be preferable 在此处包含答案的基本部分,并提供链接以供其他参考。如果您不能胜任这项任务,您应该考虑在问题上简单地leaving a comment 而不是发布答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-13
  • 2019-01-09
  • 2021-06-07
  • 2015-08-26
相关资源
最近更新 更多