Conversion date time d'un format yyyy:MM:dd hh:mm:ss

Signaler
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
-
cs_Bidou
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
-
Bonjour

Dans le format EXIF (specifique au stockage d'info dans les JPG)

Le date time s'exprime en byte array (que je peux convertir en string)

yyyy:MM:dd hh:mm:ss

Malheureusement le séparateur années mois jours est tout a fait atypique

Quelqu'un connait-il un tour de passe passe pour convertir cela facilement en datetime sans y aller au bistouri ?

<!-- / message -->

9 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
44
Salut,
Utilise une regex et formate selon une certaine culture, ensuite tu peux parser en indiquant la culture

<hr />
-Blog-
-WebSite-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
44
Ca nous donne donc qqch dans ce sytle là:

string date =
"1984:02:15 12:00:00";
date =
Regex.Replace(date,
@"(\d{4}).{1}(\d{2}).{1}(\d{2})\s*(\d{2}).{1}(\d{2}).{1}(\d{2})",
"$3.$2.$1 $4:$5:$6");

DateTime dt =
DateTime.Parse(date,
new
CultureInfo(
"fr-FR"));

Un tryParse pourrait être mieux qu'un simple Parse....

<hr />
-Blog-
-WebSite-
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
1
Mmouais !

Salut Bidou

Malheureusement je suis cancre en regex
Je crois que je vais parcourir la chaine, remplacer les deux premiers ':' que je trouve par des '-'
Et puis suivre ta suggestion de faire un DateTime.TryParse
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
1
Merci Bidou

Oui entretemps j'avais fait ma boucle

1- Convertir en char array
2- Replacer les char nécessaire
3- Reconvertir en string
4- TryParse

Ca marche

NB : sais tu comment je peux calculer la difference entre deux dates en jours ?
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
Salut, DateTime supporte l'opérateur de soustraction.

int days = ( dateTime2 - dateTime1 ).Days;
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
1
Magique !
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
44
Tu as essayé le code ci-dessus?
Il converti automatiquement la chaine en une date valide...

<hr />
-Blog-
-WebSite-
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
1
Salut Bidou

Non je n'avais pas essayé

Je reconnais que les regex c'est bien pratique mais asser ténébreux a lire et ecrire
Comme j'avais déja écrit ma boucle de remplacement en passant par un char array, j'ai laissé comme ca

Et j'utilise le TryParse apres

Mais je garde ton modele pour la prochaine fois !
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
44
J'ai pas fait un bête replace car tu as dit que le format était atypique, j'en ai déduis qu'il pouvait éventuellement varier.
Dans ce cas, ton replace ne fonctionnera plus, alors que ma regex fonctionnera pour l'importe quel type de seperator...

C'est là tout l'avantage....

<hr />
-Blog-
-WebSite-