Trabalhando com datas em Asp.net
-
13-09-2019 - |
Pergunta
Como processe uma data de entrada pelo usuário e o armazenamento no banco de dados em um campo de data? A data é inserida pelo usuário usando um JQuery DatePicker em um campo de texto.
Aqui estão as necessidades específicas que tenho:
1. Como você converte uma string mm/dd/yy (o jQuery escolhido pode produzir qualquer formato) em um formato armazenável no banco de dados como um campo de data.
2. Como obter a data e depois alterá -la para algo como "Quarta -feira, 11 de agosto de 2009"?
Estou usando C# para o back -end, mas também devo entender o código VB.
Obrigado!
Solução
usar DateTime.Parse(string)
para analisar a corda para um DateTime
que pode então ser salvo como um DateTime
no banco de dados. Você pode querer usar o Tryparse, conforme sugerido em outras respostas, para garantir que a corda fornecida possa ser analisada a um DateTime
.
Para retornar um tempo de dados em um determinado formato, você pode ligar para .toString () no DateTime e Forneça um formato ou use um dos formatos predefinidos, por exemplo, ToShortDateString()
Outras dicas
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
}
Aqui está uma lista de DateTime
Strings de formato: http://msdn.microsoft.com/en-us/library/az4se3k1.aspx
Eu concordo com a solução de John Rasch. O que as pessoas geralmente não sabem é que você também pode usar o String.Format(...)
Método para formatar sua data (e outros tipos de dados). Para datas, é obviamente mais conveniente usar o ToString()
método, já que a data fornece essa funcionalidade, mas outros tipos de dados provavelmente devolverão o endereço do objeto no ToString()
.
Portanto, considerando que você obtém sua data do banco de dados ou em algum lugar como objeto DateTime, você pode fazer o seguinte:
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);
Isso imprimirá exatamente o que você solicitou. A explicação das diferentes seqüências de formatos pode ser encontrada aqui.
O CDATE (String) fornecerá uma data real de uma string, e o DateFormat (String, Opção) retornará uma string formatada à medida que a opção estados - LongDateFormat é uma das opções que eu acho que você está procurando.
Não importa qual formato você analisou seu campo de data e hora
DateTime dt = DateTime.Now;//*example
//FormatString for "Wednesday, Aug 11, 2009" is *dddd,MMM dd,yyyy*
string formattedString = dt.ToString("dddd,MMM dd,yyyy");
Você pode manter este formato globalmente e usá -lo
As respostas anteriores verificarão para ver se é uma data (embora eu faça um try
catch
bloco para fazê -lo) Depois de confirmar que a string é uma data, basta passá -la para um procedimento armazenado ou colocá -lo em citações únicas e fazê -lo parte da sua instrução Inserir/Atualizar:
string yourdateString ="5-5-09";
update table set da='" + yourDateString + "' WHERE id=@id