Как преобразовать дату целых чисел в форматированную строку даты (например, с 2012009 по 01.02.2009) - PullRequest
2 голосов
/ 24 августа 2010

Есть идеи?Я не могу придумать ни одного.

У меня есть список дат, которые я загружаю из файла CSV, и они сохраняются как все целые числа, или, скорее, строка целых чисел (т.е. 1 января 2009 г.= 1012009)

Есть идеи, как превратить 1012009 в 01.01.2009?

Спасибо!

Ответы [ 3 ]

6 голосов
/ 24 августа 2010

Поскольку дата хранится в виде строки, вы можете использовать ParseExact:

DateTime date = DateTime.ParseExact("28012009", "dMMyyyy", null);

ParseExact выдаст исключение, если формат не соответствует. Он имеет другие перегрузки, где вы можете указать более одного возможного формата, если это требуется. Обратите внимание, что здесь provider равно null, в котором используется текущая культура.
В зависимости от стиля вы можете использовать TryParseExact.

2 голосов
/ 24 августа 2010
int date = 1012009;

var month = date / 1000000;
var day = (date / 10000) % 100;
var year = date % 10000;

var formatted = new DateTime(year, month, day).ToString();

Это предполагает месяц-день-год; если числа указаны день-месяц-год, я уверен, что вы сможете поменять местами переменные месяца и дня, чтобы учесть это.

Если вы хотите настроить формат даты, вы можете сделать это, как описано в:

0 голосов
/ 24 августа 2010

Пусть 10102009 будет dateInt.

string dateString = dateInt.ToString();
int l = dateString.Length;
dateString = dateString.Insert(l-3,"/");
dateString = dateString.Insert(l-6,"/");

Теперь у вас должна быть 01.01.2009 в dateString. Вы также можете попробовать функцию ParseExact .

...