Question

Comment traiter une date qui est entrée par l'utilisateur et la stocker dans la base de données dans un champ de date? La date est entrée par l'utilisateur à l'aide d'un datepicker jquery dans un champ texte.

Voici les besoins spécifiques que j'ai:
1. Comment convertir une chaîne mm / jj / aa (le jquery choisi peut produire tout format) à un format stockable dans la base de données comme un champ de date.
2. Comment obtenir la date et changer quelque chose comme « le mercredi 11 août 2009 »?

J'utilise C # pour le back-end, mais je devrais être en mesure de comprendre le code VB ainsi.

Merci!

Était-ce utile?

La solution

DateTime.Parse(string) pour analyser la chaîne à un DateTime qui peut puis être enregistré en tant que DateTime dans la base de données. Vous pouvez utiliser TryParse comme suggéré dans d'autres réponses, pour faire en sorte que la chaîne fournie peut être analysée à un DateTime.

Pour revenir un DateTime dans un certain format, vous pouvez appeler .ToString () sur le DateTime et ToShortDateString()

Autres conseils

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
}

Voici une liste de chaînes de format DateTime: http: // msdn. microsoft.com/en-us/library/az4se3k1.aspx

Je suis d'accord avec la solution de John Rasch. Ce que les gens ne savent pas est que vous pouvez également utiliser la méthode String.Format(...) pour formater votre date (et d'autres types de données). Pour les dates, il est évidemment plus pratique d'utiliser la méthode ToString(), car la date fournit une telle fonctionnalité, mais d'autres types de données va probablement vous renvoyer l'adresse de l'objet dans le ToString().

Alors, étant donné que vous obtenez votre date de la DB ou quelque part comme objet DateTime, vous pouvez faire ce qui suit:

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

imprimera exactement ce que vous avez demandé. L'explication des différentes chaînes de format sont disponibles .

CDATE (string) vous donnera une date réelle d'une chaîne, et dateformat (string, en option) retourne une chaîne formatée comme les états d'option -. LongDateFormat est l'une des options que je pense que vous cherchez

Quel que soit le format que vous analysables votre champ 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");

Vous pouvez maintenir globalement ce format et de l'utiliser

Les réponses précédentes vérifieront qu'il est une date (même si je fais un bloc try de catch pour le faire) Une fois que vous avez confirmé la chaîne à une date, vous pouvez simplement passer à une procédure stockée ou le mettre dans des guillemets simples et faire partie de votre déclaration d'insertion / mise à jour:

string yourdateString ="5-5-09";

update table set da='" + yourDateString + "' WHERE id=@id
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top