2009-08-11 5 views
1

Comment traiter une date saisie 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'une date jpery dans un champ de texte.Travailler avec des dates dans asp.net

Voici 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 ensuite la changer pour quelque chose comme "mercredi, 11 août 2009"? J'utilise C# pour le backend, mais je devrais aussi être capable de comprendre le code VB.

Merci!

Répondre

1

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

Pour renvoyer un DateTime dans un certain format, vous pouvez appeler .ToString() sur DateTime et supply a format ou utiliser l'un des formats prédéfinis, par exemple. ToShortDateString()

+0

Merci - cela m'a expliqué très rapidement! – stringo0

7
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 des DateTime chaînes de format: http://msdn.microsoft.com/en-us/library/az4se3k1.aspx

+0

Merci pour l'exemple! J'ai lentement compris qu'il répondait aux deux parties après avoir vu la réponse de Russ. – stringo0

1

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

1

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

string yourdateString ="5-5-09"; 

update table set da='" + yourDateString + "' WHERE [email protected] 
2

Je suis d'accord avec la solution de John Rasch. Ce que les gens ignorent souvent, c'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 T oString(), puisque la date fournit une telle fonctionnalité, mais d'autres types de données vous renverront probablement l'adresse de l'objet dans le ToString().

Donc, étant donné que vous obtenez votre date de la DB ou quelque part comme objet DateTime, vous pouvez effectuer les opérations suivantes:

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

Ce imprimera exactement ce que vous avez demandé. L'explication des différentes chaînes de format peut être trouvée here.

+0

Merci pour le conseil que cela fonctionne principalement pour le type de données de date. – stringo0

1

Quel que soit le format que vous parsé 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

Questions connexes