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

olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 - 11 nov. 2008 à 18:07
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 12 nov. 2008 à 12:04
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 -->
A voir également:

9 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
11 nov. 2008 à 18:32
Salut,
Utilise une regex et formate selon une certaine culture, ensuite tu peux parser en indiquant la culture

<hr />
-Blog-
-WebSite-
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
11 nov. 2008 à 18:43
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-
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
11 nov. 2008 à 19:11
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
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
11 nov. 2008 à 19:15
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
11 nov. 2008 à 21:54
Salut, DateTime supporte l'opérateur de soustraction.

int days = ( dateTime2 - dateTime1 ).Days;
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
11 nov. 2008 à 22:10
Magique !
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
12 nov. 2008 à 00:16
Tu as essayé le code ci-dessus?
Il converti automatiquement la chaine en une date valide...

<hr />
-Blog-
-WebSite-
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
12 nov. 2008 à 07:44
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 !
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
12 nov. 2008 à 12:04
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-
0
Rejoignez-nous