字符串未被识别为有效日期时间

时间:2014-07-24 06:50:52

标签: c# string datetime

如何将此日期02-12-2013转换为02/12/2013。得到错误:

  

字符串未被识别为有效的DateTime。

string format = "dd/MM/yyyy";
table.Rows.Add(
   25,
   "Indocin",
   "David",
   DateTime.ParseExact("02-12-2013", format, CultureInfo.InvariantCulture)
);

3 个答案:

答案 0 :(得分:1)

使用dd-MM-yyyy格式代替dd/MM/yyyy

来自documentation;

  

将指定的日期和时间字符串表示形式转换为它   DateTime等效使用指定的格式和特定​​于文化   格式信息。 字符串表示的格式必须匹配   准确的指定格式

在你的情况下,显然他们不是。

我怀疑如果您的CurrentCulture DateSeparator -null,您可以跳过使用CultureInfo.InvariantCulture部分。您可以将其用作DateTime,等于使用CultureInfo.CurrentCulture

"/" Custom Format Specifier在自定义日期和时间格式中具有特殊含义。它意味着; 将我替换为当前的文化日期分隔符或指定的文化

下次请仔细阅读文档。

  

但在这里我有一个场景,日期可以是任何格式,如   dd-MM-yyyy或dd / MM / yyyy或MM-dd / yyyy格式或者它可以是任何格式   我只需将输出显示为dd / MM / yyyy格式。请建议

首先,String没有任何隐式格式。它只是一个价值。 DateTime表示它可以有格式。

如果您的字符串可以有多种格式,则可以使用DateTime.ParseExact(String, String\[\], IFormatProvider, DateTimeStyles) overload,它将字符串数组作为您的格式。然后,您可以使用DateTime.ToString(format)yourDateTime.ToString(@"dd\/MM\/yyyy"); 显示您想要的格式;

{{1}}

答案 1 :(得分:0)

使用此:

string format = "dd-MM-yyyy";
table.Rows.Add(25, "Indocin", "David", DateTime.ParseExact("02-12-2013", format, CultureInfo.InvariantCulture));

答案 2 :(得分:0)

希望您想格式化日期;如果您不介意在代码中进行以下更改:

System.DateTime dates = Now.Date;
string format = "dd/MM/yyyy";
table.Rows.Add(25, "Indocin", "David",dates.ToString(format) ));