При обработке данных из стороннего источника необходимо было изменить формат даты под используемый нами формат. Дата была формата "28 февраля 2014 г.", т.е. это была строка с русским названием месяца. И еще "г." в конце.

Для преобразование такой строки в дату не подойдет автоматический метод преобразования строки в дату Convert.ToDateTime. В данном случае потребуется использование метода DateTime.ParseExact и класс CultureInfo, который предназначен для работы с региональной культурой – с названиями дней и месяцев календарей, форматами дат, сортировкой по алфавиту и т.д.

Значения региональных параметров для CulterInfoможно посмотреть на странице http://msdn.microsoft.com/en-us/goglobal/bb896001.aspx, а формат даты – в MSDNовском описании Custom Date and Time Format Strings.

Для преобразования строки "28 февраля 2014 г." в формат DateTime и дальнейшей работой, я написал небольшой фрагмент кода. Код получился немного академическим, но аккуратность – не лишнее качество программиста. Для наглядности и простоты привожу код консольного приложения.

 

using System;
using System.Globalization;
using System.Text;

namespace ConvertRusStringDateToDateTime
{
    class Program
    {
        static void Main(string[] args)
        {
            string rusdate, format, spresult;
            DateTime result;
            rusdate = "28 февраля 2014 г.";
            format = "dd MMMM yyyy г.";
            CultureInfo provider = CultureInfo.CreateSpecificCulture("ru-RU");
            try
            {
                result = DateTime.ParseExact(rusdate, format, provider);
                spresult = result.ToString("dd-MM-yyyy");
                Console.WriteLine(spresult);
            }
            catch (Exception ex){
                Console.WriteLine(ex.Message);
            }
            Console.WriteLine("Press any key to continue");
            Console.ReadKey(true);
        }
    }
}