Конвертировать длинную строку даты / часового пояса в дату и время - PullRequest
0 голосов
/ 01 мая 2020

У меня есть строка, которую я получаю от Telerik DatePicker. Возвращаемая строка: «Sat Aug 01 2009 00:00:00 GMT-0400 (Eastern Daylight Time)». Мне нужно преобразовать ее в «yyyy-MM-dd», однако мне не повезло. Я сохраняю ошибку «строка не была распознана как допустимое время даты».

Я пробовал:

var fromDate = Convert.ToDateTime(dateFrom)

CultureInfo culture = new CultureInfo("en-US"); 
var fromDate = Convert.ToDateTime(dateFrom, culture);

var fromDate = DateTime.ParseExact(dateFrom, "yyyy-MM-dd", CultureInfo.InvariantCulture);

Ни один из описанных выше способов не работал.

Ответы [ 2 ]

1 голос
/ 01 мая 2020

Это должно выполнить задачу

var date = DateTime.ParseExact(
    "Sat Aug 01 2009 00:00:00 GMT-0400 (Eastern Daylight Time)",
    "ddd MMM dd yyyy HH:mm:ss 'GMT-0400 (Eastern Daylight Time)'",
    CultureInfo.InvariantCulture);

var parsedDate = date.ToString("yyyy-MM-dd");       

Первым аргументом DateTime.ParseExact будет ваша строка из Datepicker

var stringFromDatePicker =  "Sat Aug 01 2009 00:00:00 GMT-0400 (Eastern Daylight Time)";

var date = DateTime.ParseExact(stringFromDatePicker,
            "ddd MMM dd yyyy HH:mm:ss 'GMT-0400 (Eastern Daylight Time)'",
            CultureInfo.InvariantCulture);

var parsedDate = date.ToString("yyyy-MM-dd");
0 голосов
/ 01 мая 2020

Опираясь на user8606929 ответ. Если вас интересует только часть даты в строке, а не время, вы можете использовать подстроку, чтобы удалить конец строки, а затем проанализировать строку как DateTime. Что-то вроде:

string dateFromDatePicker = "Sat Aug 01 2009 00:00:00 GMT-0400 (Eastern Daylight Time)";

string dateAsString = dateFromDatePicker.Substring(0,15);

DateTime selectedDate = DateTime.ParseExact(dateAsString, "ddd MMM dd yyyy", CultureInfo.InvariantCulture)

Также, если у вас есть какой-либо контроль над кодом для выбора даты, вы можете посмотреть в документации на него, чтобы увидеть, возможно ли изменить формат выбранной даты , что может облегчить анализ / использование.

...