Ошибка преобразования формата даты в C #

#c# #.net #datetime

#c# #.net #дата-время

Вопрос:

Это мой код.

         dateString = "6/29/2014";
        format = "yy-mm-dd";
        try
        {
            result = DateTime.ParseExact(dateString, format, provider);
            Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
        }
        catch (FormatException)
        {
            Console.WriteLine("{0} is not in the correct format.", dateString);
        }
 

Я хочу преобразовать свою дату 29.06.2014 в 2014-06-29, но я получаю сообщение об ошибке, что дата указана в неправильном формате. Чего мне здесь не хватает?

Комментарии:

1. Вы имеете в виду «гггг-мм-дд»?

2. да, даже я пробовал это гггг-мм-дд, но я получаю ту же ошибку

3. Ваш образец не имеет особого смысла — почему вы ожидаете "6/29/2014" (именно) маха "yy-mm-dd" ?

Ответ №1:

Ваша строка формата не соответствует вводимым данным, и вы не указали формат вывода.

 var dateString = "6/29/2014";
var format = "M/dd/yyyy";  // adjusted format to match input

try
{
    var result = DateTime.ParseExact(dateString, format, provider);

    Console.WriteLine("{0} converts to {1}.",
        dateString, result.ToString("yyyy-MM-dd"));  // specify output format
}
catch (FormatException)
{
    Console.WriteLine("{0} is not in the correct format.", dateString);
}
 

Вывод:

29.06.2014 преобразуется в 2014-06-29.

Ответ №2:

Пара вещей.

Вы хотите передать формат, из которого вы исходите, чтобы сделать его объектом date. «Конверсия», которую вы ищете, выходит с другой стороны. Кроме того, вы не передаете MM/dd/yy , что строка даты на самом деле M/dd/yyyy такова, поскольку она не включает начальный ноль в месяце, и это 4-значный год.

Вот рабочий пример.

 string dateString = "6/29/2014";
string format = "M/dd/yyyy";
try
{
    DateTime result = DateTime.ParseExact(dateString, format, CultureInfo.InvariantCulture);
    Console.WriteLine("{0} converts to {1}.", dateString, result.ToString("yyyy-MM-dd"));
}
catch (FormatException)
{
    Console.WriteLine("{0} is not in the correct format.", dateString);
}
 

Обратите внимание, что я передаю новый формат в ToString функцию.

Ответ №3:

Вам нужно сначала проанализировать дату, а затем ввести ее в строку.

 var asDate = DateTime.Parse(dateString);
var result = asDate.ToString("yy-MM-dd");
 

Также обратите внимание, что "mm" в .NET это занимает минуты. Вам нужно использовать "MM" для месяца.

Комментарии:

1. я получаю эту ошибку ‘System. DateTime’ не содержит определения для ‘Format’

2. Да, я ошибся с вызовом этого метода. Это должно быть DateTime.Parse(dateString)