дата из строки справки. Я могу преобразовать в строку, которую я хочу, но я не могу преобразовать обратно - PullRequest
1 голос
/ 30 июля 2010

У меня есть строка, которую нужно преобразовать обратно в дату.Я могу вызвать .ToString ("yyyyMMdd") и получить строку, которую я хочу.Мой вопрос, как я могу преобразовать это обратно в дату?Я пытаюсь что-то вроде следующего без удачи.

DateTime d;
var formatInfo = new DateTimeFormatInfo {ShortDatePattern = "yyyyMMdd"};
if (DateTime.TryParse(details.DetectionTime.Date, formatInfo, DateTimeStyles.None, out d))
{
   lit.Text = d.ToShortTimeString(); //would like 07/30/2010 as the text
}

Я никогда раньше не использовал DateTimeFormatInfo, если это не очевидно.Может кто-нибудь направить меня в правильном направлении.Я знаю, что мог бы использовать подстроку и создать новый DateTime (y, m, d) и т. Д. ... Мне просто интересно, поскольку c # правильно интерпретировал .ToString (), если он не может получить дату из той же строкиэто вывод.

Ответы [ 5 ]

7 голосов
/ 30 июля 2010

Обратное значение DateTime.ToString("yyyyMMdd") равно DateTime.TryParseExact, передавая "yyyyMMdd" в виде строки формата.

IFormatProvider это немного красной сельди. Обычно вы сдаете:

  • Thread.CurrentThread.Culture, если вы анализируете дату, введенную пользователем, когда вы должны подчиняться настройкам даты пользователя
  • Или CultureInfo.InvariantCulture, если вы анализируете дату, предоставленную программой, когда ваше поведение не должно зависеть от предпочтений, установленных пользователем
2 голосов
/ 30 июля 2010

Использование d.ToString("MM/dd/yyyy")

Дополнительные параметры см. http://msdn.microsoft.com/en-us/library/zdtaw1bw.aspx

Редактировать: читать неправильно

Используйте DateTime.Parse () для разбора строки на дату и время. http://msdn.microsoft.com/en-us/library/1k1skd40.aspx

Вы также можете использовать DateTime.TryParse, чтобы увидеть, может ли строка сначала преобразовать в дату. http://msdn.microsoft.com/en-us/library/system.datetime.tryparse.aspx

В качестве альтернативы вы также можете использовать Convert.ToDateTime ()

1 голос
/ 30 июля 2010

Я предполагаю, что вы хотите преобразовать строку в формат DateTime. Если это так, используйте это:

    DateTime yourStringConverted = Convert.ToDateTime( yourString );
1 голос
/ 30 июля 2010

Convert.ToDateTime ( "07/30/2010");

1 голос
/ 30 июля 2010

Если вы хотите, чтобы переменная DateTime возвращалась после отправки ее в строку, избавьте себя от проблем и просто зашифруйте или передайте действительную переменную DateTime по областям, где бы она вам не понадобилась, и не беспокойтесь о преобразовании текста обратно в DateTime класс ..

Извините, я только что понял, что это не отвечает на ваш запрос, поэтому вы ищете:

DateTime.ParseExact(someDateTime, "the format string you used to .tostring generating the string", null);
...