Comment convertir toutes les dates d'un texte ?

HairPods

Nouveau membre
8 Octobre 2020
9
1
34
Bonjour à tous,

J'ai exporté un journal intime depuis WrittenDown.app dans un fichier .txt, pour les importer dans DayOne.app.

Pour ce faire, il faut que toutes les dates soient au format suivant : Date: June 24, 2016 at 10:59:06 AM MDT

Pour l'instant, elles sont au format suivant : Date: 4 March 2012 at 00:26

Est-ce que je peux convertir toutes les dates d'un coup ? Rechercher toutes les dates dans le texte et les convertir au bon format ?

Merci.
 

LS Zaitsev

Membre d’élite
15 Août 2010
1 072
185
Afrique
Je ne connais pas ces logiciels.
Dans certains traitements de texte avancés, les dates sont automatiquement détectées (pour synchro avec un agenda par ex.) et il doit y avoir moyen d'en changer le format.

Sinon, il faut attendre l'intervention des rois du script ! :cool: Je ne vois pas d'autre solution...
 

ecatomb

Vétéran
Club MacG
21 Septembre 2016
5 632
2 467
Tu as un fichier comme ceci :
Bloc de code:
Date: 4 March 2012 at 00:26 blablabla
Date: 4 March 2012 at 00:27 blablabla

Et il faudrait le modifier comme ceci :
Bloc de code:
Date: March 4, 2016 at 00:26:00 AM MDT blablabla
Date: March 4, 2016 at 00:27:00 AM MDT blablabla

Est-ce bien ça ?
Il faudrait un exemple de conversion, car aucune idée du fuseau horaire pour l'heure du fichier d'origine.
Idem avec l'heure de l'après midi. Sera-t-il 14:00 sur le premier ou quelque chose comme 02:00 PM ?

Qu'as-tu comme éditeur de fichier texte sur ton mac (en dehors de page) ?
 

HairPods

Nouveau membre
8 Octobre 2020
9
1
34
Tu as un fichier comme ceci :
Bloc de code:
Date: 4 March 2012 at 00:26 blablabla
Date: 4 March 2012 at 00:27 blablabla

Et il faudrait le modifier comme ceci :
Bloc de code:
Date: March 4, 2016 at 00:26:00 AM MDT blablabla
Date: March 4, 2016 at 00:27:00 AM MDT blablabla

Est-ce bien ça ?
Il faudrait un exemple de conversion, car aucune idée du fuseau horaire pour l'heure du fichier d'origine.
Idem avec l'heure de l'après midi. Sera-t-il 14:00 sur le premier ou quelque chose comme 02:00 PM ?

Qu'as-tu comme éditeur de fichier texte sur ton mac (en dehors de page) ?
Bonjour,

C'est exactement ça.

L'affichage de l'heure peut-être en 24h dans les deux, pas de problème.

J'ai TextEdit, Sublime, iA Writer, TextEdit.
 

ecatomb

Vétéran
Club MacG
21 Septembre 2016
5 632
2 467
Parfait, "Sublime Text" gère les expression régulière donc on va pouvoir l'utiliser pour ça.

Donc ouvre ton fichier texte (heure en mode 24h, c'est plus simple) avec "Sublime Text"
Utilise l'outil pour remplacer en mode expression régulière.

Texte à remplacer :
Bloc de code:
^Date: ([0-9]+) ([a-zA-Z]+) ([0-9]+) at (..:..) (.*)$

Texte de remplacement (normalement la première ligne, mais c'est peut-être la deuxième avec Sublime.
Bloc de code:
Date: $2 $1, $3 at $4:00 MDT $5
Date: \2 \1, \3 at \4:00 MDT \5

Les lignes de ce type :
Bloc de code:
Date: 4 March 2012 at 00:26 blablabla
Date: 4 March 2012 at 00:27 blablabla

Devrait alors être remplacée par des lignes comme celle-ci (mois et numéro du jour inversés + ajout de 00 MDT pour l'heure)
Bloc de code:
Date: March 4, 2012 at 00:26:00 MDT blablabla
Date: March 4, 2012 at 00:27:00 MDT blablabla

Voici l'outil remplacé que j'ai de mon côté avec Visual Studio Code (c'est similaire)
Capture d’écran 2020-10-10 à 14.23.12.png
 

HairPods

Nouveau membre
8 Octobre 2020
9
1
34
Parfait, "Sublime Text" gère les expression régulière donc on va pouvoir l'utiliser pour ça.

Donc ouvre ton fichier texte (heure en mode 24h, c'est plus simple) avec "Sublime Text"
Utilise l'outil pour remplacer en mode expression régulière.

Texte à remplacer :
Bloc de code:
^Date: ([0-9]+) ([a-zA-Z]+) ([0-9]+) at (..:..) (.*)$

Texte de remplacement (normalement la première ligne, mais c'est peut-être la deuxième avec Sublime.
Bloc de code:
Date: $2 $1, $3 at $4:00 MDT $5
Date: \2 \1, \3 at \4:00 MDT \5

Les lignes de ce type :
Bloc de code:
Date: 4 March 2012 at 00:26 blablabla
Date: 4 March 2012 at 00:27 blablabla

Devrait alors être remplacée par des lignes comme celle-ci (mois et numéro du jour inversés + ajout de 00 MDT pour l'heure)
Bloc de code:
Date: March 4, 2012 at 00:26:00 MDT blablabla
Date: March 4, 2012 at 00:27:00 MDT blablabla

Voici l'outil remplacé que j'ai de mon côté avec Visual Studio Code (c'est similaire)
Voir la pièce jointe 194357
D'abord, je veux te remercier pour la rapidité et la précisions de tes réponses. C'est vraiment sympa de ta part.

Dans Sublime, j'ai fait "Replace" et dans le premier champ, j'ai rempli "^Date: ([0-9]+) ([a-zA-Z]+) ([0-9]+) at (..:..) (.*)$".

Sublime dit "Unable to find ^Date: ([0-9]+) ([a-zA-Z]+) ([0-9]+) at (..:..) (.*)$".
 

ecatomb

Vétéran
Club MacG
21 Septembre 2016
5 632
2 467
Il faut être en mode expression régulière
La petite case .* sur la gauche doit être cochée
Capture d’écran 2020-10-13 à 08.52.42.png
 

ecatomb

Vétéran
Club MacG
21 Septembre 2016
5 632
2 467
Cela fonctionne bien : 1ère ligne remplacée comme prévue.
Peut-être un problème dans le texte que tu veux remplacer ?
Capture d’écran 2020-10-14 à 08.38.38.png
 

baron

Membre d’élite
22 Avril 2008
1 585
404
LLN
Si je comprends bien l'expression régulière, on cherche du texte qui commence par Date: etc.

Comme on n'a pas d'exemple du texte d'origine, se pourrait-il qu'il ne contienne que quelque chose comme 4 March 2012 at 00:26 blablabla (sans l'expression date: avant) ?
 

ecatomb

Vétéran
Club MacG
21 Septembre 2016
5 632
2 467
C'est l'idée que j'ai aussi. Tant qu'on n'a pas d'exemple de ligne, impossible de savoir ce qui ne va pas
 

HairPods

Nouveau membre
8 Octobre 2020
9
1
34
Désolé, je suis totalement débutant en la matière. Il vous faut un exemple du texte à transformer ?

L'intégralité de mes entrées dans WrittenDown peut être exportée dans un grand fichier texte.

Ce fichier texte contient toutes les entrées les unes après les autres, comme ça :

" Date: 5 March 2012 at 22:25
Tags: Fac de Droit, Philosophie

Contenu de la note pour ce jour.


Date: 7 March 2012 at 15:46

Contenu de la note pour ce jour.
etc. ".


Est-ce que ça vous aide ?
 

ecatomb

Vétéran
Club MacG
21 Septembre 2016
5 632
2 467
Tu as un fichier comme ceci :
Bloc de code:
Date: 4 March 2012 at 00:26 blablabla
Date: 4 March 2012 at 00:27 blablabla

Et il faudrait le modifier comme ceci :
Bloc de code:
Date: March 4, 2016 at 00:26:00 AM MDT blablabla
Date: March 4, 2016 at 00:27:00 AM MDT blablabla

Est-ce bien ça ?
Il faudrait un exemple de conversion, car aucune idée du fuseau horaire pour l'heure du fichier d'origine.
Idem avec l'heure de l'après midi. Sera-t-il 14:00 sur le premier ou quelque chose comme 02:00 PM ?

Qu'as-tu comme éditeur de fichier texte sur ton mac (en dehors de page) ?
Désolé, je suis totalement débutant en la matière. Il vous faut un exemple du texte à transformer ?

L'intégralité de mes entrées dans WrittenDown peut être exportée dans un grand fichier texte.

Ce fichier texte contient toutes les entrées les unes après les autres, comme ça :

" Date: 5 March 2012 at 22:25
Tags: Fac de Droit, Philosophie

Contenu de la note pour ce jour.


Date: 7 March 2012 at 15:46

Contenu de la note pour ce jour.
etc. ".


Est-ce que ça vous aide ?
C'est donc différent de ce que j'avais compris et que tu me confirmais...

Texte à remplacer :
Bloc de code:
^Date: ([0-9]+) ([a-zA-Z]+) ([0-9]+) at (..:..)$
voir
Bloc de code:
Date: ([0-9]+) ([a-zA-Z]+) ([0-9]+) at (..:..)
Cette deuxième version ne tiendra pas compte de ce qu'il y a sur la même ligne avant ou après le bloc de date (espace ou autre)
Ta première ligne semble signifier que c'est possible.

Texte de remplacement:
Bloc de code:
Date: \2 \1, \3 at \4:00 MDT \5
 

HairPods

Nouveau membre
8 Octobre 2020
9
1
34
C'est donc différent de ce que j'avais compris et que tu me confirmais...

Texte à remplacer :
Bloc de code:
^Date: ([0-9]+) ([a-zA-Z]+) ([0-9]+) at (..:..)$
voir
Bloc de code:
Date: ([0-9]+) ([a-zA-Z]+) ([0-9]+) at (..:..)
Cette deuxième version ne tiendra pas compte de ce qu'il y a sur la même ligne avant ou après le bloc de date (espace ou autre)
Ta première ligne semble signifier que c'est possible.

Texte de remplacement:
Bloc de code:
Date: \2 \1, \3 at \4:00 MDT \5
@ecatomb, je te remercie une nouvelle fois pour ta patience. C'est vraiment sympa de faire ça

Sublime a transformé le texte comme je le voulais, c'est déjà super !

Cependant, je n'ai pu l'importer dans Day One car, d'après le technicien de l'application, pour importer un fichier texte, il faut qu'il réponde, en plus de la date, à deux critères :

Il doit y avoir deux retours chariot entre :

  1. La date et le début de l'entrée du journal.
  2. La fin de l'entrée et la date de l'entrée suivante.

Or, pour l'instant, il n'y a qu'un retour chariot à la fois. C'est possible de demander à Sublime de faire ça aussi ?
 

ecatomb

Vétéran
Club MacG
21 Septembre 2016
5 632
2 467
Nouveau texte de remplacement:
Bloc de code:
\nDate: \2 \1, \3 at \4:00 MDT \5\n
Il rajoutera un saut de ligne (retour chariot) avant et après ta ligne de date. Il te suffira juste de supprimer celle qui sera en trop au début du document et à la fin.
Cela devrait être bon comme ça.

Le \n correspond au retour chariot unix (ton document doit avoir ce format).
Pour le retour chariot windows, ce serait: \r\n
 

HairPods

Nouveau membre
8 Octobre 2020
9
1
34
Nouveau texte de remplacement:
Bloc de code:
\nDate: \2 \1, \3 at \4:00 MDT \5\n
Il rajoutera un saut de ligne (retour chariot) avant et après ta ligne de date. Il te suffira juste de supprimer celle qui sera en trop au début du document et à la fin.
Cela devrait être bon comme ça.

Le \n correspond au retour chariot unix (ton document doit avoir ce format).
Pour le retour chariot windows, ce serait: \r\n
Pardon mais je ne veux pas faire de connerie. Quel texte dois-je remplacer par ça ? (Sachant que, maintenant, la date est donc au bon format).
 

ecatomb

Vétéran
Club MacG
21 Septembre 2016
5 632
2 467
Ah! Je pensais que tu pouvais repartir de l'ancienne version.
Dans ce cas:
Bloc de code:
(Date: [a-zA-Z]+ [0-9]+, [0-9]+ at ..:..:.. MDT)
à remplacer par
Bloc de code:
\n\1\n
 

ecatomb

Vétéran
Club MacG
21 Septembre 2016
5 632
2 467
Dans ce cas on en met deux comme ici
\n\n
au lieu d'un seul