Comparer 2 dates
Résolu/Fermé
lefreeman63
Messages postés
136
Date d'inscription
mercredi 20 avril 2011
Statut
Membre
Dernière intervention
11 février 2016
-
15 juil. 2013 à 10:38
ryko1820 Messages postés 1677 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 - 15 juil. 2013 à 19:17
ryko1820 Messages postés 1677 Date d'inscription dimanche 28 avril 2013 Statut Membre Dernière intervention 15 août 2021 - 15 juil. 2013 à 19:17
A voir également:
- Comparer deux date
- Deux ecran pc - Guide
- Nombre de jours entre deux dates excel - Guide
- Comment faire deux colonnes indépendantes dans word - Guide
- Deux whatsapp sur un téléphone - Guide
16 réponses
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
15 juil. 2013 à 12:32
15 juil. 2013 à 12:32
est-ce que ceci fonctionne ? (Jul == 6, parce que les mois vont de 0 à 11)
$ perl -e 'use Time::Local; print timelocal(39, 31, 10, 15, 6, 2013), "\n";' 1373877099
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
15 juil. 2013 à 15:49
15 juil. 2013 à 15:49
j'espère qu'il connait les tableaux associatifs
$ ./k1 1373877099 $ $ cat k1 #!/bin/ksh date="Mon Jul 15 10:31:39 $(date +%Y)" mois=([Jan]=0 [Feb]=1 [Mar]=2 [Apr]=3 [May]=4 [Jun]=5 [Jul]=6 [Aug]=7 [Sep]=8 [Oct]=9 [Nov]=10 [Dec]=11) export IFS=" :" ;set -- $date perl -e "use Time::Local; print timelocal($6, $5, $4, $3, ${mois[$2]}, $7), \"\n\";"
ryko1820
Messages postés
1677
Date d'inscription
dimanche 28 avril 2013
Statut
Membre
Dernière intervention
15 août 2021
276
Modifié par ryko1820 le 15/07/2013 à 16:11
Modifié par ryko1820 le 15/07/2013 à 16:11
Hello,
puissant le ksh ...
j'ai trouvé un petit truc ...
exemple :
./diffdate.ksh "Mon Jul 15 10:31:39" "Sun Jul 15 11:00:39"
il y a 00 h 29 mn et 00 secondes de différence entre les 2 dates
Ok, je l'ai pas inventé :p
Source (en pdf): http://blog.fpmurphy.com/2008/10/ksh93-date-manipulation.html?output=pdf
Quelques autres liens intéressant en rapport avec le sujet, rencontrés en cherchant :
https://docstore.mik.ua/orelly/unix3/korn/ch07_02.htm
https://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/
puissant le ksh ...
j'ai trouvé un petit truc ...
# # USAGE: diffdate start-date finish-date # # EXAMPLE: diffdate "Tue, Feb 19, 2008 08:00:02 PM" "Wed, Feb 20, 2008 02:19:09 AM" # # Note: Maximum de 100 heures de différence entre 2 dates ... # SDATE=$(printf '%(%s)T' "$1") FDATE=$(printf '%(%s)T' "$2") DIFF=$(($FDATE-$SDATE)) SECS=$(($DIFF % 60)) MINS=$(($DIFF % (60 * 60) / 60)) HOURS=$(($DIFF / (60 * 60))) printf "il y a %02d h %02d mn et %02d secondes de différence entre les 2 dates\n" $HOURS $MINS $SECS
exemple :
./diffdate.ksh "Mon Jul 15 10:31:39" "Sun Jul 15 11:00:39"
il y a 00 h 29 mn et 00 secondes de différence entre les 2 dates
Ok, je l'ai pas inventé :p
Source (en pdf): http://blog.fpmurphy.com/2008/10/ksh93-date-manipulation.html?output=pdf
Quelques autres liens intéressant en rapport avec le sujet, rencontrés en cherchant :
https://docstore.mik.ua/orelly/unix3/korn/ch07_02.htm
https://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/
ryko1820
Messages postés
1677
Date d'inscription
dimanche 28 avril 2013
Statut
Membre
Dernière intervention
15 août 2021
276
15 juil. 2013 à 16:19
15 juil. 2013 à 16:19
Si c'est pas clair voir les liens joint, sur le formatage des dates en ksh
On initialise par printf deux variables date (T) au format epoch (%s) a partir des arguments dates entrés ...
On soustrait, on formate pour les secondes, etc ...
Simple
On initialise par printf deux variables date (T) au format epoch (%s) a partir des arguments dates entrés ...
On soustrait, on formate pour les secondes, etc ...
Simple
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
15 juil. 2013 à 10:50
15 juil. 2013 à 10:50
Salut,
Le plus simple reste de convertir tes dates en "epoch" (man date) et de voir si la différence est supérieure ou non à 600.
Le plus simple reste de convertir tes dates en "epoch" (man date) et de voir si la différence est supérieure ou non à 600.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lefreeman63
Messages postés
136
Date d'inscription
mercredi 20 avril 2011
Statut
Membre
Dernière intervention
11 février 2016
15 juil. 2013 à 11:00
15 juil. 2013 à 11:00
Merci beaucoup pour ta réponse.
Effectivement j'y avais pensé mais je dois t'avouer que je n'arrive pas à convertir la date de ma log en epoch :-/
Pour la date courante ces date +%s
Mais pour une date sous ce format je vois pas comment faire
Effectivement j'y avais pensé mais je dois t'avouer que je n'arrive pas à convertir la date de ma log en epoch :-/
Pour la date courante ces date +%s
Mais pour une date sous ce format je vois pas comment faire
Mon Jul 15 10:31:39
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
15 juil. 2013 à 11:52
15 juil. 2013 à 11:52
hello
essayer en Perl; j'ai rajouté l'année, mais je n'ai pas le bon fuseau horaire (3600s de diff), je cherche.
essayer en Perl; j'ai rajouté l'année, mais je n'ai pas le bon fuseau horaire (3600s de diff), je cherche.
$ perl -e 'use Time::Piece; my $t=Time::Piece->strptime($ARGV[0], "%a %b %d %T %Y"); print $t->strftime("%s\n")' "Mon Jul 15 10:31:39 2013" ; date -d 'Mon Jul 15 10:31:39 2013' +%s 1373880699 1373877099 $
lefreeman63
Messages postés
136
Date d'inscription
mercredi 20 avril 2011
Statut
Membre
Dernière intervention
11 février 2016
15 juil. 2013 à 11:59
15 juil. 2013 à 11:59
Waou impressionnant la ligne, merci bien.
Mais malheureusement je suis sous un AIX qui n'aime pas l'option -d
:-/
Mais malheureusement je suis sous un AIX qui n'aime pas l'option -d
Can't locate Time/Piece.pm in @INC (@INC contains: /usr/opt/perl5/lib/5.8.8/aix-thread-multi /usr/opt/perl5/lib/5.8.8 /usr/opt/perl5/lib/site_perl/5.8.8/aix-thread-multi /usr/opt/perl5/lib/site_perl/5.8.8 /usr/opt/perl5/lib/site_perl .) at -e line 1. BEGIN failed--compilation aborted at -e line 1. date: illegal option -- d Usage: date [-n][-u] [mmddHHMM[[cc]yy]] [+Field Descriptors] Usage: date [-n][-u] [mmddHHMM[.SS[cc]yy]] [+Field Descriptors] Usage: date [-a] [[+|-]sss.fff]
:-/
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
15 juil. 2013 à 12:12
15 juil. 2013 à 12:12
le date -d .. est juste pour comparer le résultat de Perl
lefreeman63
Messages postés
136
Date d'inscription
mercredi 20 avril 2011
Statut
Membre
Dernière intervention
11 février 2016
15 juil. 2013 à 13:59
15 juil. 2013 à 13:59
oui sa fonctionne :
# perl -e 'use Time::Local; print timelocal(39, 31, 10, 15, 6, 2013), "\n";' 1373877099
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
15 juil. 2013 à 14:30
15 juil. 2013 à 14:30
il faut convertir Mon Jul 15 10:31:39 en nombres, quel shell ?
ryko1820
Messages postés
1677
Date d'inscription
dimanche 28 avril 2013
Statut
Membre
Dernière intervention
15 août 2021
276
15 juil. 2013 à 14:32
15 juil. 2013 à 14:32
Sympa AIX, je vais pas loin en vacance ;p
Nan je déconne .... ;-)
J'ai fait pas mal de RS6000 et on voit pas souvent des questions là dessus ici, mais Dubcheck a déjà donné une soluce qui tient la route ...
Nan je déconne .... ;-)
J'ai fait pas mal de RS6000 et on voit pas souvent des questions là dessus ici, mais Dubcheck a déjà donné une soluce qui tient la route ...
lefreeman63
Messages postés
136
Date d'inscription
mercredi 20 avril 2011
Statut
Membre
Dernière intervention
11 février 2016
15 juil. 2013 à 14:37
15 juil. 2013 à 14:37
ksh
Vraiment merci bien :-)
Vraiment merci bien :-)
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
15 juil. 2013 à 15:19
15 juil. 2013 à 15:19
un vieux ksh, je suppose
$ ksh --version version sh (AT&T Research) 93t+ 2009-05-01 $
lefreeman63
Messages postés
136
Date d'inscription
mercredi 20 avril 2011
Statut
Membre
Dernière intervention
11 février 2016
15 juil. 2013 à 15:46
15 juil. 2013 à 15:46
lol surement très vieux étant donné que le version ne marche pas :-/
# ksh --version ksh --version --version: bad option(s)
lefreeman63
Messages postés
136
Date d'inscription
mercredi 20 avril 2011
Statut
Membre
Dernière intervention
11 février 2016
15 juil. 2013 à 16:02
15 juil. 2013 à 16:02
Pkoi es ce que j'ai l'impression que j'ai pas de chance et qu'il ne connais pas les tableaux associatifs :-(
# cat test.ksh #!/bin/ksh date="Mon Jul 15 10:31:39 $(date +%Y)" mois=([Jan]=0 [Feb]=1 [Mar]=2 [Apr]=3 [May]=4 [Jun]=5 [Jul]=6 [Aug]=7 [Sep]=8 [Oct]=9 [Nov]=10 [Dec]=11) export IFS=" :" ;set -- $date perl -e "use Time::Local; print timelocal($6, $5, $4, $3, ${mois[$2]}, $7), \"\n\";" # ./test.ksh ./test.ksh[3]: syntax error at line 3 : '(' unexpected #
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
15 juil. 2013 à 16:22
15 juil. 2013 à 16:22
avec un case, alors
#!/bin/ksh date="Mon Jul 15 10:31:39 $(date +%Y)" export IFS=" :" ;set -- $date case $2 in Jan) m=0 ;; Feb) m=1 ;; Mar) m=2 ;; Apr) m=3 ;; May) m=4 ;; Jun) m=5 ;; Jul) m=6 ;; Aug) m=7 ;; Sep) m=8 ;; Oct) m=9 ;; Nov) m=10 ;; Dec) m=11 ;; esac perl -e "use Time::Local; print timelocal($6, $5, $4, $3, $m, $7), \"\n\";"
lefreeman63
Messages postés
136
Date d'inscription
mercredi 20 avril 2011
Statut
Membre
Dernière intervention
11 février 2016
15 juil. 2013 à 16:33
15 juil. 2013 à 16:33
NIKEL :-D
Sa marche bien avec le case :-) plus qu' a réadapter pour mon script.
Sincèrement Merci beaucoup, je confirme que j'aurais jamais pu y arriver seul
Sa marche bien avec le case :-) plus qu' a réadapter pour mon script.
Sincèrement Merci beaucoup, je confirme que j'aurais jamais pu y arriver seul
lefreeman63
Messages postés
136
Date d'inscription
mercredi 20 avril 2011
Statut
Membre
Dernière intervention
11 février 2016
15 juil. 2013 à 16:20
15 juil. 2013 à 16:20
Merci bien sa avait l'air très jolie mais mon serveur est à chier lol:
# cat test.ksh
#!/bin/ksh
#
# USAGE: diffdate start-date finish-date
#
# EXAMPLE: diffdate "Tue, Feb 19, 2008 08:00:02 PM" "Wed, Feb 20, 2008 02:19:09 AM"
#
# Note: Maximum de 100 heures de différence entre 2 dates ...
#
SDATE=$(printf '%(%s)T' "$1")
FDATE=$(printf '%(%s)T' "$2")
DIFF=$(($FDATE-$SDATE))
SECS=$(($DIFF % 60))
MINS=$(($DIFF % (60 * 60) / 60))
HOURS=$(($DIFF / (60 * 60)))
printf "il y a %02d h %02d mn et %02d secondes de différence entre les 2 dates\n" $HOURS $MINS $SECS
# ./test.ksh "Mon Jul 15 10:31:39" "Sun Jul 15 11:00:39"
./test.ksh[13]: ()T-()T: syntax error
#
# cat test.ksh
#!/bin/ksh
#
# USAGE: diffdate start-date finish-date
#
# EXAMPLE: diffdate "Tue, Feb 19, 2008 08:00:02 PM" "Wed, Feb 20, 2008 02:19:09 AM"
#
# Note: Maximum de 100 heures de différence entre 2 dates ...
#
SDATE=$(printf '%(%s)T' "$1")
FDATE=$(printf '%(%s)T' "$2")
DIFF=$(($FDATE-$SDATE))
SECS=$(($DIFF % 60))
MINS=$(($DIFF % (60 * 60) / 60))
HOURS=$(($DIFF / (60 * 60)))
printf "il y a %02d h %02d mn et %02d secondes de différence entre les 2 dates\n" $HOURS $MINS $SECS
# ./test.ksh "Mon Jul 15 10:31:39" "Sun Jul 15 11:00:39"
./test.ksh[13]: ()T-()T: syntax error
#
ryko1820
Messages postés
1677
Date d'inscription
dimanche 28 avril 2013
Statut
Membre
Dernière intervention
15 août 2021
276
Modifié par ryko1820 le 15/07/2013 à 16:30
Modifié par ryko1820 le 15/07/2013 à 16:30
Tu peux essayer avec #!/usr/bin/ksh93 au début ou là ou pourrait se situer ksh93 ?
Apparemment sous linux par défaut on a de l'enhanced ksh pas sous AIX ...
http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.baseadmn%2Fdoc%2Fbaseadmndita%2Fkorn_shell_enhanced.htm
Apparemment sous linux par défaut on a de l'enhanced ksh pas sous AIX ...
http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.baseadmn%2Fdoc%2Fbaseadmndita%2Fkorn_shell_enhanced.htm
blux
Messages postés
26737
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
25 mars 2025
3 332
Modifié par blux le 15/07/2013 à 16:35
Modifié par blux le 15/07/2013 à 16:35
Salut,
Par défaut, sous AIX, c'est le ksh88...
Pour le savoir, taper une fois sur [ECHAP] puis [CTRL+V], ça affiche un truc du genre :
Version M-11/16/88f
Il faut avoir fait un set -o vi, avant...
Ensuite, un bon shebang pour /usr/bin/ksh93 devrait aller...
Par défaut, sous AIX, c'est le ksh88...
Pour le savoir, taper une fois sur [ECHAP] puis [CTRL+V], ça affiche un truc du genre :
Version M-11/16/88f
Il faut avoir fait un set -o vi, avant...
Ensuite, un bon shebang pour /usr/bin/ksh93 devrait aller...
lefreeman63
Messages postés
136
Date d'inscription
mercredi 20 avril 2011
Statut
Membre
Dernière intervention
11 février 2016
15 juil. 2013 à 16:30
15 juil. 2013 à 16:30
Y a du changement :-) :
# cat test.ksh #!/usr/bin/ksh93 # # USAGE: diffdate start-date finish-date # # EXAMPLE: diffdate "Tue, Feb 19, 2008 08:00:02 PM" "Wed, Feb 20, 2008 02:19:09 AM" # # Note: Maximum de 100 heures de différence entre 2 dates ... # SDATE=$(printf '%(%s)T' "$1") FDATE=$(printf '%(%s)T' "$2") DIFF=$(($FDATE-$SDATE)) SECS=$(($DIFF % 60)) MINS=$(($DIFF % (60 * 60) / 60)) HOURS=$(($DIFF / (60 * 60))) printf "il y a %02d h %02d mn et %02d secondes de différence entre les 2 dates\n" $HOURS $MINS $SECS # ./test.ksh ./test.ksh[10]: printf: T: unknown format specifier ./test.ksh[11]: printf: T: unknown format specifier ./test.ksh: line 13: -: more tokens expected #
lefreeman63
Messages postés
136
Date d'inscription
mercredi 20 avril 2011
Statut
Membre
Dernière intervention
11 février 2016
15 juil. 2013 à 16:37
15 juil. 2013 à 16:37
Merci beaucoup Ryko pour ton aide et pour tous ces beau liens :-)
ryko1820
Messages postés
1677
Date d'inscription
dimanche 28 avril 2013
Statut
Membre
Dernière intervention
15 août 2021
276
Modifié par ryko1820 le 15/07/2013 à 17:10
Modifié par ryko1820 le 15/07/2013 à 17:10
Bah de rien, malheureusement même le printf de ton ksh93 connait pas l'option T :'(
(et leur %s non plus veut pas dire la même chose)
Ils nous facilitent pas la vie ces gens là ...
http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.cmds%2Fdoc%2Faixcmds4%2Fprintf.htm
(et leur %s non plus veut pas dire la même chose)
Ils nous facilitent pas la vie ces gens là ...
http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.cmds%2Fdoc%2Faixcmds4%2Fprintf.htm
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
15 juil. 2013 à 17:57
15 juil. 2013 à 17:57
johand@osiris: ~ $ date "+%s" -d "Mon Jul 15 10:31:39" 1373877099te donne le nombre de secondes depuis l'epoch .
avec GNU coreutils 8.12.197-032bb
Sous AIX , je ne sais pas :(
ryko1820
Messages postés
1677
Date d'inscription
dimanche 28 avril 2013
Statut
Membre
Dernière intervention
15 août 2021
276
Modifié par ryko1820 le 15/07/2013 à 19:19
Modifié par ryko1820 le 15/07/2013 à 19:19
AMHA ça marchera pas non plus :'(
http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.cmds%2Fdoc%2Faixcmds2%2Fdate.htm
Il y a pas l'option display dans leur commande date et c'est bien dommage ...
Faut le faire en C ? :p
http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.cmds%2Fdoc%2Faixcmds2%2Fdate.htm
Il y a pas l'option display dans leur commande date et c'est bien dommage ...
Faut le faire en C ? :p