我有一条记录,我使用FileHelpers写入CSV文件。我希望将结构的DateTime字段写为UTC日期。我目前有以下格式化程序:
[FieldConverter(ConverterKind.Date, "yyyy-MM-dd")]
要让它输出UTC日期,我需要做什么?
答案 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")]