1
votes

Google Sheets: convertir la chaîne en date

Je dois suivre la chaîne de date:

2019-05-07

Je veux maintenant convertir la date et l'heure en 2 cellules, mais cela ne fonctionne toujours pas avec la date. Je l'ai essayé avec:

=LEFT(F2; FIND("T"; F2) - 1)

Ce qui donne:

2019-05-07T19:00:00.000Z

Mais je ne peux pas convertir cela en une date comme JJ .MM.YYYY. Si je tape "2019-05-07" manuellement, je peux le convertir - mais il n'est pas convertible avec les données importées. Pourquoi?

Et j'ai le même problème avec l'heure.


6 commentaires

Peut-être que = text (text (text (day (LEFT (C8, FIND ("T", C8) -1)), "00") & "/" & text (month (LEFT (C8, FIND (" T ", C8) -1))," 00 ") &" / "& année (GAUCHE (C8, FIND (" T ", C8) -1))," 0000 ")," jj.MM.aaaa " ) ?


génial, cela fonctionne! Et comment puis-je obtenir le "19:00" dans une autre cellule?


Peut-être juste MID (F2, 12, 5) ? Ou = text (MID (F2, 12, 5), "hh: mm") . Je ne suis pas sûr que vous ayez réellement besoin de TROUVER le T dans la cellule si le format est toujours le même. Pas besoin de regex non plus


Merci beaucoup, c'était la solution: = MID (G2; 12; 5)


Heureux que ma solution ait fonctionné pour vous. Veuillez envisager d'accepter la réponse en cliquant sur ✓ à gauche (voir Comment accepter les réponses SO ) et voter si ma réponse vous a été utile (voir Comment faire vote positif sur Stack Overflow? ).


Y a-t-il d'autres minces qui ne sont pas claires? Avez-vous besoin de modifications? Votre exemple indique que vos chaînes sont toujours dans le même format, donc l'utilisation de regex ne semble pas nécessaire, mais veuillez indiquer si vous devez travailler avec des données plus désordonnées - alors quelque chose comme REGEXEXTRACT (F2, "^ ([ 0-9] [0-9 -] +) ") et REGEXEXTRACT (F2," T ([0-9] +: [0-9] +) ") venir à portée de main


3 Réponses :


0
votes

Vous n'avez pas besoin d'une expression régulière ni même de FIND si le format des valeurs de chaîne est toujours le même.

Obtenez les dates avec

=MID(F2, 12, 5)

( text (..., "jj.MM.aaaa") effectuera la conversion d'une chaîne de date reformatée) et les heures avec

=text(text(text(day(LEFT(F2, 10)),"00") & "/" & text(month(LEFT(F2, 10)),"00") &"/"& year(LEFT(F2, 10)),"0000"),"dd.MM.yyyy")

Voir la capture d'écran de Google Sheets:

 entrez la description de l'image ici


0 commentaires

0
votes

utilisez ceci:

={TEXT(DATE(LEFT(A13, 4), MID(A13, 6, 2), MID(A13, 9, 2)), "dd.MM.yyyy"),
 REGEXEXTRACT(A13, "T(.*)\.")}

 0


0 commentaires

0
votes

Pour répondre à votre question, quoique superficiellement, des fonctions de texte (telles que LEFT et TEXT) renvoie des chaînes que Sheets ne tente pas de convertir automatiquement en un nombre qui pourrait ensuite être présenté au format Date.

Cependant, cela peut être forcé avec VALUE . Ainsi, en enveloppant VALUE autour de ce que vous avez essayé, comme ceci:

=MID(G2; 12; 5)

devrait, pour votre exemple, renvoyer 07.05.2019 lorsqu'il est formaté avec un format personnalisé de

=split(left(F2;23);"T")

Depuis taggé vous pouvez appliquer:

=split(regexreplace(F3;"[A-Z]";" ");" ")

pour remplacer à la fois le T et le Z par des espaces avant le fractionnement sur les espaces car le format semble susceptible d'être cohérent (par exemple toujours 24 caractères) mais une version plus courte serait:

dd.mm.yyyy

avec application d'un formatage approprié pour chacune des dates et le temps.

L'application, comme dans un commentaire,

=value(LEFT(F2; FIND("T"; F2) - 1))

présente l'inconvénient potentiel que MID est également une fonction de texte (donc ne convient pas, par exemple, pour un formatage pratique avec AM / PM).


0 commentaires