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

本文关键字:日期 时间 有效 识别 字符串 | 更新日期: 2023-09-27 18:14:45

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

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

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

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

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

从文档;

将日期和时间的指定字符串表示形式转换为其使用指定的格式和特定于区域性的DateTime等效格式的信息。字符串表示的格式必须匹配

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

我怀疑如果你的CurrentCultureDateSeparator-,你可以跳过使用CultureInfo.InvariantCulture部分。您可以将其用作null,相当于使用CultureInfo.CurrentCulture

"/"自定义格式说明符在自定义日期和时间格式中具有特殊含义。它的意思是;用当前区域性日期分隔符或指定的区域性替换me。

下次请仔细阅读文档。

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

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

如果你的字符串可以有多种格式,你可以使用DateTime.ParseExact(String, String'['], IFormatProvider, DateTimeStyles)重载,它将字符串数组作为你的格式。然后你可以使用DateTime.ToString(format)来显示你的DateTime任何你想要的格式,比如;

yourDateTime.ToString(@"dd'/MM'/yyyy");

使用

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

希望你想格式化日期;如果你不介意的话,可以在你的代码中做如下修改:

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