Формат DateTime в UTC с помощью FileHelpers - PullRequest
3 голосов
/ 15 октября 2010

У меня есть запись, которую я записываю в файл CSV, используя FileHelpers.Я хочу, чтобы поля DateTime структуры были записаны как дата UTC.В настоящее время у меня есть следующий форматтер:

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

Что мне нужно сделать, чтобы получить его для вывода даты UTC?

Ответы [ 3 ]

3 голосов
/ 15 октября 2010

Док говорит:

Вы можете проверить все поддерживаемые форматы строки проверяют документы MSDN на наличие DateTime.ParseExact

Итак, согласно: http://msdn.microsoft.com/en-us/library/az4se3k1.aspx

[FieldConverter (ConverterKind.Date, "u")]

"u" => "гггг" - 'ММ' - 'дд ЧЧ': 'мм': '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();}
}
3 голосов
/ 15 октября 2010

Вы можете обернуть преобразование с помощью открытого установщика, который присваивает правильное значение частному полю.Например:

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

1 голос
/ 15 октября 2010

Используйте метод ToUniversalTime () класса DateTime

Итак, если ConverterKind.Date имеет тип DateTime, ваш код должен быть

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