La récupération d'une valeur DateTime à partir d'un DataRow (C#)
Comment puis-je obtenir DateTime
valeur en C# à partir de la ligne, le code actuel me donne erreur
toute aide est appréciée, les données en provenance d'avancement de la base de données:
foreach (DataRow r in ds.Tables[0].Rows)
{
string prodCode = r["PRD-CDE"].ToString();
statCode = r["STAT"].ToString();
DateTime firstIssueDate = (DateTime)(r["FISS"]);
DateTime endIssueDate = (DateTime)(r["EISS"]);
if(endIssueDate > DateTime.Now)
{ /*do some thing...*/}
else {/*user invalid...*/}
}
il y a deux façons utilisées dans l'obtention de la date de convertir et de pars, je vous remercie tous pour l'aide
De travail Final extrait de Code:
foreach (DataRow r in ds.Tables[0].Rows)
{
string prodCode = r["PRD-CDE"].ToString(),statCode = r["STAT"].ToString();
//r.<DateTime?>("FISS");
if (r["FISS"] != DBNull.Value)
{
DateTime firstIssueDate = Convert.ToDateTime(r["FISS"]);
if (r["EISS"] != DBNull.Value)
{
DateTime endIssueDate = DateTime.Parse(r["EISS"].ToString());
if (endIssueDate > DateTime.Now)
{
Les messages d'erreur que vous obtenez pourrait aider.
Quel est le type de données de la colonne dans le jeu de données? Est-il DateTime de SQL?
c'est une colonne de date en cours de la base de données
Je sais que c'est tard, mais si c'est une colonne de date dans la DB, alors je m'attends à l'objet à déjà DateTime donc pas de conversion devrait être nécessaire.
Quel est le type de données de la colonne dans le jeu de données? Est-il DateTime de SQL?
c'est une colonne de date en cours de la base de données
Je sais que c'est tard, mais si c'est une colonne de date dans la DB, alors je m'attends à l'objet à déjà DateTime donc pas de conversion devrait être nécessaire.
OriginalL'auteur Developer | 2009-07-09
Vous devez vous connecter pour publier un commentaire.
C'est juste une supposition, mais si le type correspondant dans la base de données est de type DateTime, pourriez-vous vérifier si la colonne est nullable?
Si de sorte que vous pouvez faire une vérification de
r["column"] == DBNull.Value
et puis la passer à un nullable DateTime? Champ.Ou encore plus simple:
Si ce n'est pas le cas, alors oui, Convertir.ToDateTime() ou quelque chose d'autre doit le faire.
EDIT:
Je vois ton code final de là, mais est-il une chance que vous voulez faire:
J'ai vu ton code et j'ai ajouté quelques suggestions dans le "MODIFIER" de la partie. Qu'en pensez-vous?
Je n'ai jamais vu l' .Champ<> la méthode utilisée.. Nice +1
OriginalL'auteur Robert Luong
Je vous conseille d'utiliser DateTime.Parse() si la ligne est de retourner une chaîne de caractères pour l'indice.
Vous pouvez également utiliser
TryParse
en fonction de vos besoins.Est-il possible que vous pourriez nous montrer que r["FISS"].ToString() ressemble? C'est peut-être un type nullable comme quelqu'un l'a mentionné.
OriginalL'auteur Chris Thompson
Si vous souhaitez utiliser une valeur par défaut (tels que le type DateTime.MinValue), plutôt que null (DateTime?) ou DBNull, vous pourriez faire ceci:
OriginalL'auteur brianary
Ceci devrait compiler et peut travailler pour vous. Si elle n'est certainement pas d'effectuer toute vérification d'erreur que vous devriez faire pour la production de code. Aussi regarder en DateTime.TryParse et vous pouvez regarder dans l'ajout d'un IFormatProvider pour assurer le format est analysée comme prévu.
OriginalL'auteur Timothy Carter
Tout d'abord, faire r["FISS"].GetType() et de l'imprimer à la console (ou la mettre en pause et de le regarder dans le débogueur). Si il dit que c'est une Chaîne de caractères, puis la plupart des conseils ci-dessus vous aidera. Si elle dit quelque chose d'autre, s'il vous plaît revenir et de mettre à jour votre question.
OriginalL'auteur zvolkov
Comme une réponse, vous pouvez utiliser également la fonction statique Convertir.ToDateTime
OriginalL'auteur Jhonny D. Cano -Leftware-
DateTime.Parse(r["FISS"].ToString()) est le chemin à parcourir, mais il lance un "la Chaîne n'a pas été reconnu comme un DateTime valide" erreur. Pourriez-vous montrer de la chaîne dans la r["FISS"] colonne, il pourrait être un problème de l'internationalisation....
OriginalL'auteur Colin
Si vous avez un DateTime chaîne avec un format spécial (pas toute norme .NET format DateTime) qui doit être converti .NET type DateTime, vous pouvez utiliser
DateTime.ParseExact()
méthode.Veuillez voir le Document MSDN pour plus de détails, y compris les exemples.
Si vous avez plusieurs formats pour analyser, essayer DateTime.ParseExact Méthode (String, String[], IFormatProvider, DateTimeStyles)
OriginalL'auteur Chansik Im