零填充空日期时间和格式化日期时间

时间:2013-07-11 18:54:49

标签: c# datetime filehelpers fixed-length-record

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

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

但问题是我需要以特定格式提供此日期。我可以使用

实现格式化
[FieldConverter(ConverterKind.Date, "MMddyyyy")]

但是我不能使用我的客户现场转换器。

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

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

为了您的目的(编写文件),该字段是一个八位数字符串,因此请将其视为此类,并仅使用日期转换作为生成八位数字符串的中间步骤。

这样的事情(伪代码):

if date field is null
{
    return "00000000"
}
else
{
    return string of date formatted as "MMddyyyy"
}