Формат 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")]
Другие вопросы по тегам