FieldConverterConverterKind.Date"dd/MM/yyyy"异常我尝试读取csv文件。我的第五条记录是日期:03/11/2008这是我的一段代码:[FieldConverter(ConverterKind.Date,"dd/MM/yyyy")]publicDateTimedatum_5;我的代码崩溃了:Result[]results=(Result[])engine.ReadFile(@"..Dataexpo.txt");并有以下例外:行:1。列:41。字段:datum_5。将“03/11/2008”转换为类型时出错:“DateTime”。使用格式:'dd/MM/yyyy'当我这样做时:[FieldConverter(typeof(ConvertDate))]publicDateTimedatum_5;有了这个:internalclassConvertDate:ConverterBase{//////日期分隔符的不同形式:.or/orspace//////日期的字符串格式-首先是日期///publicoverrideobjectStringToField(string来自){日期时间dt;如果(DateTime.TryParseExact(from,"dd.MM.yyyy",null,DateTimeStyles.None,outdt))返回dt;如果(DateTime.TryParseExact(from,"dd/MM/yyyy",null,DateTimeStyles.None,outdt))返回dt;如果(DateTime.TryParseExact(from,"ddMMyyyy",null,DateTimeStyles.None,outdt))返回dt;thrownewArgumentException("无法从"+from,"from");我得到了这个异常:无法从2008年3月11日获取日期参数中获取日期:从我做错了什么?它失败是因为/是自定义日期格式字符串中特定于文化的DateSeparator,如MSDN中所述。您为IFormatProvider参数指定了null,因此它使用当前区域性,该区域性可能具有除/之外的日期分隔符。最好的解决方案是明确指定CultureInfo.InvariantCulture(下面的第二个版本)。将自定义日期格式字符串中的“/”转义为文字斜杠而不是DateSeparator也将起作用(下面的第一个版本)。//将当前文化设置为使用“.”的文化作为DateSeparatorThread.CurrentThread.CurrentCulture=newCultureInfo("de-DE");//这将起作用-转义意味着它使用文字/作为分隔符DateTime.TryParseExact(s,@"dd/MM/yyyy",null,DateTimeStyles.None,outresult);//这样更好-Culture.InvariantCulture将/用于DateTimeFormatInfo.DateSeparator//并且您清楚地表达了使用不变文化DateTime.TryParseExact(s,"dd/MM/yyyy",CultureInfo.InvariantCulture,DateTimeStyles.None的意图,输出结果);//这将失败-/意味着使用DateTimeFormatInfo.DateSeparator,它是“.”在de-DE文化中DateTime.TryParseExact(s,"dd/MM/yyyy",null,DateTimeStyles.None,outresult);当您尝试时会发生什么:DateTime.TryParseExact(from,"dd/MM/yyyy",CultureInfo.InvariantCulture,DateTimeStyles.None,outdt);怎么写:以上就是C#学习教程:FieldConverterConverterKind.Date"dd/MM/yyyy"异常分享的全部内容。如果对大家有用,需要详细了解C#学习教程,希望大家关注——[FieldConverter(ConverterKind.Date,"dd'/'MM'/'yyyy")]publicDateTimedatum_5;本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。明源:
