Мне нужно прочитать файл csv, который иногда имеет значения int в полях DateTime из-за ошибки ввода. Но мне все равно нужно сохранить эти значения, чтобы впоследствии записать их в выходной файл. ПримерКак исправить ConvertException при написании файла txt с помощью библиотеки FileHelpers?
данных:
"517506","m","2012-11-07","LTU","4","m","0"
"517507","m","9","BLR","2","d","0"
На первой я думал, что проблема с самим чтением, но потом я заметил, что я получаю эту ошибку
Unhandled Exception: FileHelpers.ConvertException: Error Converting '9' to type: 'DateTime'. There are less chars in the Input String than in the Format string: 'yyyy-MM-dd'
, когда я пытаюсь преобразовать те ИНТ значения Возврат к значению DateTime при записи вывода в файл .txt.
Буду признателен за любую помощь.
Мой код:
static void Main(string[] args)
{
var engine = new FileHelperEngine<Citizen>();
var result = engine2.ReadFile(@"C:\registered_people.csv");
engine.WriteFile(@"C:\FileOut2.txt", result);
}
Citizen Класс:
public class Citizen
{
[FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)]
public int? id;
[FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)]
[FieldNullValue("")]
public string gender;
[FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)]
[FieldNullValue(typeof(DateTime), "")]
[FieldConverter(ConverterKind.Date, "yyyy-MM-dd")]
public DateTime birthDate;
[FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)]
[FieldNullValue("")]
public string nationality;
[FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)]
public int? countyNo;
[FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)]
[FieldNullValue("")]
public string familyStat;
[FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)]
public int? children;
}
Прочитайте их как текст и преобразуйте их в datetime, если они имеют правильный формат. – Ian
С каких это "9" допустимое значение даты? Это то, что данные имеют во 2-й записи для «BirthDate». Похоже, кто-то закодировал возраст там, когда вам действительно нужна полная дата рождения. –