Probléme de Date

Résolu
Signaler
Messages postés
16
Date d'inscription
jeudi 25 juin 2009
Statut
Membre
Dernière intervention
25 juin 2009
-
Messages postés
16
Date d'inscription
jeudi 25 juin 2009
Statut
Membre
Dernière intervention
25 juin 2009
-
Bonjour,
Je viens de reprendre une application en C# et j'ai un soucis :

Je récupére les valeurs du jour, mois et année avec des string et je voudrais retourner un format DateTime.

code :

public DateTime formatDateDefaut()
        {
            //Récupération des valeurs jour, mois et année
            String jour = this.import.laValeurChampFichier.Substring(this.import.leFormat.IndexOf('J'), this.import.leFormat.LastIndexOf('J') - this.import.leFormat.IndexOf('J') + 1);
            String mois = this.import.laValeurChampFichier.Substring(this.import.leFormat.IndexOf('M'), this.import.leFormat.LastIndexOf('M') - this.import.leFormat.IndexOf('M') + 1);
            String annee = this.import.laValeurChampFichier.Substring(this.import.leFormat.IndexOf('A'), this.import.leFormat.LastIndexOf('A') - this.import.leFormat.IndexOf('A') + 1);

            //Format de la date par défaut
            DateTime dateFormatDefaut = new DateTime(int.Parse(annee), int.Parse(mois), int.Parse(jour));
            return dateFormatDefaut;
        }

J'ai l'erreur suivante :

Les paramètres Year, Month et Day décrivent un DateTime qui ne peut pas être représenté.

Merci de laisser des réponses construite et du code pour bien expliquer.
D'avance merci.
Bye.
Flo.

9 réponses

Messages postés
2
Date d'inscription
vendredi 16 mars 2007
Statut
Membre
Dernière intervention
7 janvier 2009

Et bien, je bloque un poil, essaye de passer des valeurs fixes à ton DateTime (genre DateTime(1999,7,7)) en mettant et enlevant les 0, voir les cas qui marchent et ceux qui non.
Je suis désolé, je bloque Floux. Après tu peux essayer de passer un calendrier en dernier paramètre du DateTime (voir msdn) mais je suis pas convaincu que ça résoudra ton probleme.
Messages postés
16
Date d'inscription
jeudi 25 juin 2009
Statut
Membre
Dernière intervention
25 juin 2009
1
Problème résolut :


En fait pour l'année 2000, j'avais la valeur "00" pour l'année.

Donc forcément, le format DateTime ne comprend pas "00" mais
"2000"!

Il faut mettre la valeur de la date en entier.


Merci a tous pour votre aide.

Flo.
Messages postés
16
Date d'inscription
jeudi 25 juin 2009
Statut
Membre
Dernière intervention
25 juin 2009
1
En fait je crois avoir compris le probléme :
Si j'ai un mois "06" ma valeur dans ma string est toujours "06" mais quand je la met dans un int je trouve uniquement "6".
Donc aprés j'ai tout  mes éléments décalés.

Avez vous une idée pour que les valeurs passéés en int ne suprime pas les "0" avant.

Merci.
Messages postés
2
Date d'inscription
vendredi 16 mars 2007
Statut
Membre
Dernière intervention
7 janvier 2009

Salut,
Je pense que ton problème ne vient pas du fait que le int perde son 0 devant, si on regarde les spec de DateTime sur msdn elles disent que le mois obtient une valeur allant de 1 à 12.
Si j'ai tout compris tu as une chaine de caractère où il y a la date et tu as une chaine de caractère indiquant le format dans lequelle elle t'es donné c'est ca?
As-tu fais un affichage de tes string, et un affichage des parsage en int pour voir ce que cela te retournais'Histoire d'être sûr que la chaine corresponde bien au format.
Messages postés
16
Date d'inscription
jeudi 25 juin 2009
Statut
Membre
Dernière intervention
25 juin 2009
1
oui j'ai mes deux chaines de caractéres :
laValeurChampFichier : pour ma date
et le format pour déterminer le jour, le mois et l'année

Mais si j'ai un date 02061999, dans chaque string ca donne :
02, puis 06 et 1999
Mais quand je passe en int, j'ai 2, puis 6 et 1999.

la chaine correspond bien au format.

Merci pour ton aide.
Messages postés
327
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
10 avril 2010
8
Salut,

C'est dur de dire a quoi ton format de date peut ressembler, mais essaie de faire ca

DateTime dt;

if(DateTime.TryParse(this.import.laValeurChampFichier, out dt))
{
return dt;
}
else
{
//essaie de faire marcher ta methode
}
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
22 décembre 2014

Salut,

J'ai déjà eu ce problème en visual basic.
Lorsque mon programme tournait sur certaines machines, les dates étaient OK
Et sur d'autres, cela ne fonctionnait pas...

En fait, cela provient de tes réglages de windows (options régionales).
Alors, prends ton courage à deux mains et crée-toi une routine de "formatage" de date...

Désolé de ne pouvoir t'aider plus... mais je ne connais pas le C
Si tu le souhaites, je peux te la fournir en visual basic 6

Bon courage

jyd
Messages postés
16
Date d'inscription
jeudi 25 juin 2009
Statut
Membre
Dernière intervention
25 juin 2009
1
[../auteur/WISHHHMASTER/231972.aspx
]
Slt les gens!



ShawiNord, quand
j'écrit en dur, ca passe!


DateTime dateFormatDefaut = new DateTime(1999, 7, 7);

Mais je pense quand clalendrier du SateTime ca va être trop galére.

WishhhMaster, ta méthode ne passe pas
il ne reconnait pas le format de date passé dans "laValeurChampFichier".



 



Je veux bien ta source en VB6, jytest, ca pourra toujours m’apprendre.



Mon adresse : floflo69290@hotmail.fr.








Merci a tous.





Je test et vous
tiens au courant.
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
22 décembre 2014

ReSalut,

Avant de faire toutes ces manip, as-tu tout simplement
essayer de modifier tes "options régionales et Linguistiques" ?

Panneau de configuration > Options Régionales et linguistiques > Format > Personaliser ce format

Qu'est-ce que cela donne ?

La source en VB6, tu l'auras ce soir

jyd