#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)