Формат DateTime в UTC с помощью FileHelpers
У меня есть запись, которую я записываю в файл CSV, используя FileHelpers. Я хочу, чтобы поля DateTime структуры были записаны как дата UTC. В настоящее время у меня есть следующий форматер:
[FieldConverter(ConverterKind.Date, "yyyy-MM-dd")]
Что мне нужно сделать, чтобы получить вывод даты UTC?
3 ответа
Док говорит:
Вы можете проверить все поддерживаемые строки формата. Проверьте документы MSDN на DateTime.ParseExact.
Итак, согласно: http://msdn.microsoft.com/en-us/library/az4se3k1.aspx
[FieldConverter (ConverterKind.Date, "u")]
"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();}
}
Вы можете обернуть преобразование с помощью открытого установщика, который присваивает правильное значение частному полю. Например:
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
Используйте метод ToUniversalTime() класса DateTime
Итак, если ConverterKind.Date
имеет тип DateTime ваш код должен быть
[FieldConverter(ConverterKind.Date.ToUniversalTime(), "yyyy-MM-dd")]