我正在尝试将我的字符串格式化值转换为日期类型,格式为dd.MM.yyyy

时间:2017-01-11 10:27:43

标签: c# datetime

this.Text = "22.11.2016"; 

DateTime.ParseExact(this.Text, "dd/MM/yyyy", null);

当我运行它时,它给我错误:

  

Error.String未被识别为有效的DateTime。处理您的请求时发生错误

4 个答案:

答案 0 :(得分:3)

在您的示例中,您使用斜杠(/)来解析ParseExtract()中的日期,但在this.Text中您的日期有点(.)作为分隔符。

替换此行:

DateTime.ParseExact(this.Text, "dd/MM/yyyy", null);

这一个:

DateTime.ParseExact(this.Text, "dd.MM.yyyy", null);

此外,您可以更改this.Text以使用斜杠,并且您的代码将正常运行。

答案 1 :(得分:3)

您可以提及多种格式,允许分隔符为./

  this.Text = "22.11.2016"; 

  var result = DateTime.ParseExact(this.Text, 
    new string[] { "dd/MM/yyyy", "dd.MM.yyyy" }, 
    null, 
    DateTimeStyles.AssumeLocal);

答案 2 :(得分:1)

您的文字采用此格式22.11.2016,并且您尝试使用此格式22/11/2016进行解析。

您有3个选项:

  1. this.Text格式从this.Text="22.11.2016;"更改为this.Text="22/11/2016";

  2. 将解析方法从DateTime.ParseExact(this.Text, "dd/MM/yyyy", null);更改为DateTime.ParseExact(this.Text, "dd.MM.yyyy", null);

  3. 您可以通过调用Replace()方法强制使用所需格式(种类):DateTime.ParseExact(this.Text.Replace('.', '/'), "dd/MM/yyyy", null);

答案 3 :(得分:0)

如果您的文化有.作为日期分隔符,请传递文化

e.g。

this.Text = "22.11.2016";
DateTime dateTime =
    DateTime.ParseExact(this.Text, "dd/MM/yyyy", new CultureInfo("de-DE"));

请注意/是本地化日期分隔符的自定义格式说明符。 (https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx#dateSeparator