Probléme de Date [Résolu]

Messages postés
16
Date d'inscription
jeudi 25 juin 2009
Dernière intervention
25 juin 2009
- - Dernière réponse : floflo69290
Messages postés
16
Date d'inscription
jeudi 25 juin 2009
Dernière intervention
25 juin 2009
- 8 janv. 2009 à 11:32
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.
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
2
Date d'inscription
vendredi 16 mars 2007
Dernière intervention
7 janvier 2009
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 123 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ShawiNord
Messages postés
16
Date d'inscription
jeudi 25 juin 2009
Dernière intervention
25 juin 2009
1
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 123 internautes nous ont dit merci ce mois-ci

Commenter la réponse de floflo69290
Messages postés
16
Date d'inscription
jeudi 25 juin 2009
Dernière intervention
25 juin 2009
1
0
Merci
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.
Commenter la réponse de floflo69290
Messages postés
2
Date d'inscription
vendredi 16 mars 2007
Dernière intervention
7 janvier 2009
0
Merci
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.
Commenter la réponse de ShawiNord
Messages postés
16
Date d'inscription
jeudi 25 juin 2009
Dernière intervention
25 juin 2009
1
0
Merci
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.
Commenter la réponse de floflo69290
Messages postés
327
Date d'inscription
mardi 17 février 2004
Dernière intervention
10 avril 2010
8
0
Merci
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
}
Commenter la réponse de WishhhMaster
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Dernière intervention
22 décembre 2014
0
Merci
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
Commenter la réponse de jytest
Messages postés
16
Date d'inscription
jeudi 25 juin 2009
Dernière intervention
25 juin 2009
1
0
Merci
[../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.
Commenter la réponse de floflo69290
Messages postés
315
Date d'inscription
dimanche 27 novembre 2005
Dernière intervention
22 décembre 2014
0
Merci
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
Commenter la réponse de jytest

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.