0

我正在尝试使用 FileHelpers 编写一个固定长度的文件。我拥有的一些字段是可以为空值的日期时间。如果它们是空值,我需要将它们填充为零(即“00000000”而不是日期)。我尝试使用自定义字段转换器,

public class CustomDateConverter : ConverterBase
{
    public override object StringToField(string from)
    {
        if (from == null)
        {
            return string.Empty;
        }
        return from;
    }
}

但问题是我需要特定格式的这个日期。我可以使用

[FieldConverter(ConverterKind.Date, "MMddyyyy")]

但是我不能使用我的客户字段转换器。

有人可以直接指导我如何完成格式转换和零填充我可能得到的空值吗?

4

2 回答 2

2

尝试这个:

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;
于 2016-02-05T13:15:50.457 回答
0

出于您的目的(编写文件),该字段是一个八位字符串,因此请按此处理,并且仅将日期转换用作生成八位字符串的中间步骤。

所以像这样(伪代码):

if date field is null
{
    return "00000000"
}
else
{
    return string of date formatted as "MMddyyyy"
}
于 2013-07-11T19:03:22.817 回答