GettingError:StringwasnotrecognizedasavalidDateTimeinc#'System.FormatException'附加信息:字符串未被识别为有效的日期时间。我正在使用这段代码:stringdatetime=DateTime.Parse(encrypt[1]);或字符串日期时间=Convert.ToDatetime(encrypt[1]);encrypt是encrypt[1]中的字符串数组我不确定哪种格式会出现在字符串中。我有一些时间dd/MM/yyyy,有时MM/dd/yyyy或MM-dd-yyyy或dd-MM-yyyy。我不确定它可能来自上述格式或其他格式。还可以使用ParseExcept和TryParseExcept。但是似乎没有成功返回相同的错误请给我适当的解决方案。AndreyAkinshin已经解释了真正的问题。如果他允许我,我想补充这个答案。默认情况下,DateTime.Parse和Convert.ToDatetime方法都使用CurrentCulture设置。并且您的CurrentCulture只能具有dd/MM/yyyy或MM/dd/yyyy格式之一。它不能将这两种格式都作为标准的日期和时间格式,因为当你得到像01/01/2014这样的字符串时,它无法知道它使用的是哪种格式。没有可以解决您的问题的DateTime方法。即使您使用将格式作为字符串[]的DateTime.TryParseExact重载,它也会使用数组中匹配的第一个成功格式来解析您的字符串。TL;DR您必须知道数据的格式。如果您不确切知道发生了什么,您很少需要更改正确的日期格式。举个例子:01/02/2014这是1月2日还是2月1日?如果您确实知道格式,则可以使用TryParseExact然后沿着列表向下走直到匹配:DateTimed;如果(DateTime.TryParseExact(encrypt[1],"dd/MM/yyyy",CultureInfo.InvariantCulture,outd)){}elseif(DateTime.TryParseExact(encrypt[1],"yyyy/MM/dd",CultureInfo.InvariantCulture,outd)){}你无法以编程方式判断日期是dd/mm/yyyy还是mm/dd/yyyy,除非它们显然无效,例如,如果你期望dd/mm/yyyy而你得到12/14/2014,那么该格式只能是mm/dd/yyyy。但是,由于您从HTTP请求(问题标记为MVC)接收数据,您可以找到用户的文化并使用它来解析日期,例如DateTime.Parse("13/12/2014",newCultureInfo("en-GB"));//工作正常。DateTime.Parse("13/12/2014",Thread.CurrentThread.CurrentCulture)请参阅http://msdn.microsoft.com/en-us/library/bb882561(v=vs.110).aspx.以上就是C#学习教程:geterror:ThestringisnotrecognizedasavalidDateTimeinc#的所有内容分享,如果对大家有用还需要详细了解C#学习教程,希望大家多多付出注意——本文来自网络收藏,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
