使用FileHelpers将DateTime格式化为UTC

时间:2010-10-15 13:11:18

标签: c# datetime filehelpers

我有一条记录,我使用FileHelpers写入CSV文件。我希望将结构的DateTime字段写为UTC日期。我目前有以下格式化程序:

[FieldConverter(ConverterKind.Date, "yyyy-MM-dd")]   

要让它输出UTC日期,我需要做什么?

3 个答案:

答案 0 :(得分:3)

医生说:

  

您可以检查所有支持的格式   字符串检查MSDN文档   DateTime.ParseExact

所以根据:http://msdn.microsoft.com/en-us/library/az4se3k1.aspx

[FieldConverter(ConverterKind.Date,“u”)]

“你”=> “yyyy' - 'MM' - 'dd HH':​​'mm':'ss'Z'” 它不会将日期转换为utc,只需将其格式化

你仍然需要DateTime.ToUniversalTime来转换它。

修改 如果你有类似的东西:

[FieldConverter(ConverterKind.Date, "ddMMyyyy" )]
public DateTime ShippedDate;

然后添加临时ShippedDateUTC:

public DateTime ShippedDate;

[FieldConverter(ConverterKind.Date, "ddMMyyyy" )]
public DateTime ShippedDateUTC {
  get{ return ShippedDate.ToUniversalTime();}
}

答案 1 :(得分:3)

您可以使用公共setter包装转换,该公共setter将正确的值分配给私有字段。例如:

public class OutputRecord
{
    [FieldConverter(ConverterKind.Date, "ddMMyyyy" )]
    private DateTime dateInUtc:

    public void SetDate(DateTime date)
    {
        dateInUtc = date.ToUniversalTime();
    }

}

您还可以使用自定义转换器http://www.filehelpers.com/example_customconv.html

答案 2 :(得分:1)

使用DateTime类的ToUniversalTime()方法

因此,如果ConverterKind.Date的类型为DateTime,则代码应为

[FieldConverter(ConverterKind.Date.ToUniversalTime(), "yyyy-MM-dd")]