我试图使用文件助手库来读取分隔的平面文件。
[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);
答案 0 :(得分:2)
“/”是特定于区域性的DateSeparator。因此,它正在被您的文化的日期分隔符取代。转换时,您必须在转换时在文化设置中指定InvariantCulture