Нулевое заполнение нулевых datetime и форматирование datetime
Я пытаюсь написать файл фиксированной длины с FileHelpers. Некоторые из полей, которые у меня есть, являются datetime, которые могут быть нулевыми значениями. Если они являются нулевыми значениями, мне нужно, чтобы они были заполнены нулями (то есть "00000000" вместо даты). Я пытался использовать пользовательский конвертер полей,
public class CustomDateConverter : ConverterBase
{
public override object StringToField(string from)
{
if (from == null)
{
return string.Empty;
}
return from;
}
}
но проблема в том, что мне нужна эта дата в определенном формате. Я могу достичь формата с помощью
[FieldConverter(ConverterKind.Date, "MMddyyyy")]
Но тогда я не могу использовать свой конвертер клиентов.
Может кто-нибудь подсказать мне, как мне выполнить преобразование формата и обнуление, заполнив нулевые значения, которые я могу получить?
2 ответа
Для ваших целей (написание файла) поле представляет собой строку из восьми цифр, поэтому рассматривайте ее как таковую и используйте преобразования даты только в качестве промежуточного шага для создания строки из восьми цифр.
Так что-то вроде этого (псевдокод):
if date field is null
{
return "00000000"
}
else
{
return string of date formatted as "MMddyyyy"
}
Попробуй это:
public class CustomDateConverter : ConverterBase
{
public override object StringToField(string stringValue)
{
if (string.IsNullOrEmpty(stringValue) || stringValue == "00000000")
{
return null;
}
return Convert.ToDateTime(stringValue);
}
public override string FieldToString(object fieldValue)
{
return fieldValue == null ? "00000000" : ((DateTime)fieldValue).ToString("MMddyyyy");
}
}
[FieldConverter(typeof(CustomDateConverter))]
public DateTime? MyDate;