Я хочу проанализировать формат даты dd-MM-yyyy в dd MMM yyyy. Я получаю ссылку, но не могу правильно преобразовать дату, она не соответствует дате и месяцу.
Предположим, моя дата
string dat = "11-01-2019"
и я использую
string date = DateTime.Parse(dat).ToString("dd MMM yyyy");
но он возвращает 01 ноя 2019. Но на самом деле это 11 января 2019 г., потому что формат даты - дд-мм-гггг. Я не понимаю, как это исправить. Любой метод синтаксического анализа, который я использую, возвращает 01 ноября 2019 года, что неверно. Пожалуйста, помогите мне решить проблему
Вам нужно будет указать культуру, для которой отформатирована дата. Я предполагаю, что Великобритания здесь:
var ukCulture = System.Globalization.CultureInfo.GetCultureInfo("en-gb");
string dat = "11-01-2019";
string date = DateTime.Parse(dat, ukCulture).ToString("dd MMM yyyy");
Console.WriteLine(date);
Обратите внимание, что вы получите FormatException
, если вы введете здесь недопустимую дату, поэтому лучше использовать TryParse
:
var ukCulture = System.Globalization.CultureInfo.GetCultureInfo("en-gb");
string dat = "11-01-2019";
DateTime parsedDate;
if (DateTime.TryParse(dat, ukCulture, System.Globalization.DateTimeStyles.None, out parsedDate))
{
string date = parsedDate.ToString("dd MMM yyyy");
Console.WriteLine(date);
}
else
{
Console.WriteLine("invalid date");
}
В дополнение к отличному ответу Джона, вот список кодов CultureInfo для справки: http://www.csharp-examples.net/culture-names/