web-dev-qa-db-fra.com

Chaîne ISO-8601 à ce jour dans la cellule Google Sheets

J'ai un tas de chaînes au format ISO-8601 dans une colonne de ma feuille. Comment puis-je obtenir des feuilles de google pour les traiter comme des dates afin que je puisse faire des calculs sur elles (différence en minutes entre deux cellules, par exemple)? J'ai essayé juste =Date("2015-05-27T01:15:00.000Z") mais pas de joie. Il doit y avoir un moyen simple de le faire. Aucun conseil?

41
Bob Kuhar

Pour obtenir une valeur de date réelle que vous pouvez formater en utilisant la mise en forme normale des nombres ...

=DATEVALUE(MID(A1,1,10)) + TIMEVALUE(MID(A1,12,8))

par exemple.

╔═══╦══════════════════════╦════════════════════╗
║   ║          A           ║          B         ║
╠═══╬══════════════════════╬════════════════════╣
║ 1 ║ 2016-02-22T05:03:21Z ║ 2/22/16 5:03:21 AM ║
╚═══╩══════════════════════╩════════════════════╝
  • Suppose que les horodatages sont en UTC
  • Ignore les millisecondes (bien que vous puissiez en ajouter assez facilement)

La fonction DATEVALUE() transforme une chaîne de date formatée en valeur, et TIMEVALUE() fait de même pour les heures. Dans la plupart des feuilles de calcul, les dates et heures sont représentées par un nombre où la partie entière est le nombre de jours depuis le 1er janvier 1900 et la partie décimale est le temps en fraction de la journée. Par exemple, le 11 juin 2009 à 17 h 30 correspond à environ 39975.72917.

La formule ci-dessus analyse séparément la partie date et la partie temps, puis les ajoute ensemble.

60
rcoup

Essaye ça

=CONCATENATE(TEXT(INDEX(SPLIT(SUBSTITUTE(A1,"Z",""),"T"),1),"yyyy-mm-dd")," ",TEXT(INDEX(SPLIT(SUBSTITUTE(A1,"Z",""),"T"),2),"hh:mm:ss"))

A1 peut être une cellule avec une chaîne formatée ISO-8601 ou la chaîne elle-même.

16
Akshin Jalilov

J'ai trouvé beaucoup plus simple d'utiliser =SUM(SPLIT(A2,"TZ"))

Format yyyy-MM-dd HH:mm:ss.000 pour afficher à nouveau la valeur de date en tant qu'ISO-8601.

15
Chris Bandy