Excel десятичный формат в C # DateTime - PullRequest
3 голосов
/ 14 июля 2010

На моем уровне доступа к данным C # ... я получаю набор данных из Excel ... и есть десятичное поле Excel, которое возвращает дату в формате: 20090701.Мне нужно, чтобы это было преобразовано в C # DateTime.Каков наилучший способ сделать это?

Ответы [ 3 ]

4 голосов
/ 14 июля 2010
DateTime.ParseExact( value.ToString(), "yyyymmdd" );

Метод ParseExact позволяет указать строку формата для даты / времени, которое вы конвертируете.В вашем случае: четырехзначный год, затем двузначный месяц, затем двузначный день месяца.

0 голосов
/ 14 июля 2010

И менее интуитивный ответ для хорошей меры.

var a = 20090701m;
var b = a / 10000;
var year = (int)b;
var c = (b - year) * 100;
var month = (int)c;
var day = (int)((c - month) * 100);
var dt = new DateTime(year, month, day);
0 голосов
/ 14 июля 2010

Я бы сделал что-то подобное, если бы вы захотели реализовать это в масштабе всего приложения.

System.Globalization.CultureInfo cultureInfo =
            new System.Globalization.CultureInfo("en-CA");
        // Defining various date and time formats.
        dateTimeInfo.LongDatePattern = "yyyyMMdd";
        dateTimeInfo.ShortDatePattern = "yyyyMMdd";
        dateTimeInfo.FullDateTimePattern = "yyyyMMdd";
        // Setting application wide date time format.
        cultureInfo.DateTimeFormat = dateTimeInfo;


    // Assigning our custom Culture to the application.
    //Application.CurrentCulture = cultureInfo;
    Thread.CurrentThread.CurrentCulture = cultureInfo;
    Thread.CurrentThread.CurrentUICulture = cultureInfo;

DateTime.Parse(excelDate);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...