KyLim0211 Ответов: 3

Преобразование строки в дату


есть идеи, как преобразовать string= "28/06/2016" в дату с этим форматом 2016-06-21?

в моем c# я объявляю дату строкой, моя хранимая процедура-это формат даты.

Что я уже пробовал:

значение datetime.ParseExact(evendate, "yyyy-MM-dd", CultureInfo.Языка и региона существует)

JayantaChatterjee

вы получили какую-нибудь ошибку при преобразовании даты?
если вы получаете ошибки, тогда что это за ошибки?

3 Ответов

Рейтинг:
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"));


Надеюсь, это поможет.


KyLim0211

не работать

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 ("гггг-ММ-ДД");"... :-)
в остальном все просто и понятно..

KyLim0211

не работать

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");