Работа с датами в asp.net - PullRequest
       21

Работа с датами в asp.net

1 голос
/ 12 августа 2009

Как мне обработать дату, введенную пользователем, и сохранить ее в базе данных в поле даты? Дата вводится пользователем с помощью jquery datepicker в текстовом поле.

Вот конкретные потребности, которые у меня есть:
1. Как преобразовать строку mm / dd / yy (выбранный jquery может создать любой формат) в формат, сохраняемый в базе данных как поле даты.
2. Как получить дату, а затем изменить ее на что-то вроде «Среда, 11 августа 2009 г.»?

Я использую C # для бэкэнда, но я также должен понимать VB Code.

Спасибо!

Ответы [ 6 ]

7 голосов
/ 12 августа 2009
string dateString = "08/11/09";
DateTime yourDate;

if(DateTime.TryParse(dateString, out yourDate)) 
{
   // do something with yourDate
   string output = yourDate.ToString("D"); // sets output to: Tuesday, August 11, 2009
}
else 
{
   // invalid date entered
}

Вот список строк формата DateTime: http://msdn.microsoft.com/en-us/library/az4se3k1.aspx

2 голосов
/ 12 августа 2009

Я согласен с решением Джона Раша. Люди часто не знают, что вы также можете использовать метод String.Format(...) для форматирования даты (и других типов данных). Для дат, очевидно, удобнее использовать метод T oString(), поскольку дата предоставляет такую ​​функциональность, но другие типы данных, вероятно, вернут вам адрес объекта в ToString().

Таким образом, если вы получите свою дату из БД или где-то в виде объекта DateTime, вы можете сделать следующее:

DateTime date = DateTime.Now; //normally would come from somewhere else

//Wednesday, Aug 11, 2009 <-- what we want to get displayed
string displayFormat ="dddd, MMM dd, yyyy";
string formattedDate = string.Format("{0:" + displayFormat + "}", date);

Response.Write(formattedDate);

Это точно напечатает то, что вы просили. Объяснение строк различного формата можно найти здесь .

1 голос
/ 12 августа 2009

Независимо от того, в каком формате вы анализировали поле DateTime

DateTime dt = DateTime.Now;//*example
//FormatString for "Wednesday, Aug 11, 2009" is *dddd,MMM dd,yyyy*
string formattedString = dt.ToString("dddd,MMM dd,yyyy");

Вы можете глобально хранить этот формат и использовать его

1 голос
/ 12 августа 2009

Предыдущие ответы проверят, чтобы увидеть, что это дата (хотя я делаю для этого блок try catch) После того, как вы подтвердили, что строка является датой, вы можете просто передать ее в хранимую процедуру или поместить ее в одинарные кавычки и включить в оператор вставки / обновления:

string yourdateString ="5-5-09";

update table set da='" + yourDateString + "' WHERE id=@id
1 голос
/ 12 августа 2009

используйте DateTime.Parse(string) для разбора строки на DateTime, который затем можно сохранить как DateTime в базе данных. Возможно, вы захотите использовать TryParse, как предлагается в других ответах, чтобы гарантировать, что предоставленная строка может быть проанализирована в DateTime.

Чтобы вернуть DateTime в определенном формате, вы можете вызвать .ToString () для DateTime и предоставить формат или использовать один из предопределенных форматов, например, ToShortDateString()

1 голос
/ 12 августа 2009

cDate (строка) даст вам фактическую дату из строки, а dateformat (строка, опция) вернет строку, отформатированную в соответствии с состоянием опции - longdateformat - одна из опций, которые, я думаю, вы ищете. 1001 *

...