FieldConverter ConverterKind.Date不支持" dd / MM / yyyy HH:mm:ss.ffffff"

时间:2016-06-14 22:15:22

标签: c# .net datetime-format flat-file filehelpers

我试图使用文件助手库来读取分隔的平面文件。

[FieldConverter(ConverterKind.Date, "yyyy/MM/dd HH:mm:ss.ffffff")]
public DateTime DateOfInteraction;

但我收到以下异常

  

FileHelpers.ConvertException未处理     的HResult = -2146233088     消息=错误转换' 2015-09-20 23:40:07.707000'输入:' DateTime'。使用格式:' yyyy / MM / dd HH:mm:ss.ffffff'     来源= FileHelpers     得到columnnumber = 80     字段名= DateOfInteraction     FieldStringValue = 2015-09-20 23:40:07.707000     LineNumber上= 2     MessageExtra =使用格式:' yyyy / MM / dd HH:mm:ss.ffffff'     MessageOriginal =错误转换' 2015-09-20 23:40:07.707000'输入:' DateTime'。     堆栈跟踪:          at FileHelpers.ConvertHelpers.DateTimeConverter.StringToField(String from)          在FileHelpers.FieldBase.AssignFromString(ExtractedInfo fieldString,LineInfo行)          在FileHelpers.FieldBase.ExtractFieldValue(LineInfo行)          在FileHelpers.RecordOperations.StringToRecord(对象记录,LineInfo行,Object []值)          在FileHelpers.FileHelperAsyncEngine 1.ReadNextRecord() at FileHelpers.FileHelperAsyncEngine 1.ReadNext()          在FileHelpers.FileHelperAsyncEngine`1.AsyncEnumerator.MoveNext()          在C:\ MSRS \ Old Sys \ Practice \ CIMStats \ TestApplication \ Program.cs中的TestApplication.Program.Main(String [] args):第22行          在System.AppDomain._nExecuteAssembly(RuntimeAssembly程序集,String [] args)          在System.AppDomain.ExecuteAssembly(String assemblyFile,Evidence assemblySecurity,String [] args)          在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()          在System.Threading.ThreadHelper.ThreadStart_Context(对象状态)          at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext,ContextCallback callback,Object state,Boolean preserveSyncCtx)          at System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback callback,Object state,Boolean preserveSyncCtx)          在System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback回调,对象状态)          在System.Threading.ThreadHelper.ThreadStart()   InnerException:

即使日期格式字符串是有效的,我也不明白为什么我会得到异常。以下代码片段给出了正确的输出...

Console.WriteLine("Started: {0:dd/MM/yyyy HH:mm:ss.ffffff}", DateTime.Now);

DateTime format

1 个答案:

答案 0 :(得分:2)

自定义日期格式字符串中的

“/”是特定于区域性的DateSeparator。因此,它正在被您的文化的日期分隔符取代。转换时,您必须在转换时在文化设置中指定InvariantCulture