Рейтинг:
16
Zafar Sultan
Ну, я не знаю, почему вы хотите преобразовать 28 июня 2016 года в 21 июня 2016 года, а также я не уверен, что это хорошо или нет? В любом случае, вы можете поиграть со следующим примером. Последнее утверждение, вероятно, то, что вам нужно.
DateTime myDate = DateTime.ParseExact("28-06-2016", "dd-MM-yyyy",
System.Globalization.CultureInfo.InvariantCulture);
Console.WriteLine(myDate);
Console.WriteLine(myDate.ToString("MM-dd-yyyy"));
Console.WriteLine(myDate.ToString("yyyy-dd-MM"));
Console.WriteLine(myDate.ToString("yyyy-MM-dd"));
Надеюсь, это поможет.
phil.o
"Не работает" - это неверное описание проблемы.
Рейтинг:
11
OriginalGriff
Простой:
DateTime dt = DateTime.ParseExact(evendate, "dd/MM/yyyy", CultureInfo.InvariantCulture)
"Формат", который вы предоставляете ParseExact или TryParseExact, - это формат входной строки, а не какой-либо возможный формат представления, который вы можете применить. Значения DateTime не имеют "формата" - они хранятся как количество тиков с заранее определенного момента времени.
Чтобы отформатировать его для отображения, вы должны преобразовать его в строку. Для вашего необходимого формата:
string formatted = dt.ToString("yyyy-MM-dd");
Будут делать это
[править]опечатка[/правка]
JayantaChatterjee
ст".Метод toString("гггг-ММ-ДД");" бы "ДТ.ToString ("гггг-ММ-ДД");"... :-)
в остальном все просто и понятно..
OriginalGriff
"Не работает" - один из самых бесполезных отчетов об ошибках, которые мы получаем: он ничего нам не говорит.
Есть сообщение? Время выполнения? Компиляция? Когда это происходит? Что происходит, чего вы не ожидали, или не происходит, что вы ожидали?
KyLim0211
см. мой новый комментарий ниже thx
OriginalGriff
1) Не размещайте код как решение - это не ответ, и это раздражает людей.
2) это совершенно другая проблема, чем та, которую вы изначально задали.
3) используйте код, который я дал вам выше, чтобы разобрать текстовую строку в значение DateTime и передать его непосредственно в SQL вместо строки. Это все исправит. А еще лучше используйте TryParse или TryParseExact и убедитесь, что пользователь сначала ввел действительную дату - сообщите об ошибке, если он этого не сделал, вместо того чтобы продолжать.
Но я бы рекомендовал не использовать текстовое поле для дат - вместо этого используйте Календарь или что-то подобное, чтобы пользователь не мог ввести неверные данные.
phil.o
"Не работает" - это неверное описание проблемы.
OriginalGriff
Исправлено: пропустил ключ! :смеяться:
Рейтинг:
0
Kornfeld Eliyahu Peter
Вы должны использовать date как дату, передавая ее между C# и SQL, а не как строку. Форматирование его как строки предназначено только для целей отображения...
Но в случае, если у вас уже есть дата в виде строки, из-за какого-то невежественного б..., сделайте это:
string evendate = "28/06/2016";
DateTime date = DateTime.ParseExact(evendate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
date.ToString("yyyy-MM-dd");