[Shell Unix] Manipulation de date

Fermé
bstevy Messages postés 3 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 12 septembre 2012 - 11 juin 2009 à 13:53
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 11 juin 2009 à 15:22
Bonjour à tous,

Voila, j'ai un problème que j'espère l'un d'entre vous saura résoudre.
Le principe est simple :


Je possède une date au format AAMMJJ (ex pour aujourd'hui : 090610) et tous un tas d'autres dates au même format. Dans mon shell, j'introduit un nombre (de jours) en paramètre et je dois faire a partir de là, ma date principale moins mon nombre de jours en parametre. Ensuite, je dois comparer cette nouvelle date avec les autres et récupérer tous les dates de ma liste étant plus petite.


J'ai déjà considéré ma date comme un entier... mais ca pose des problèmes. Si je suis le 1 juin, et que je fais -5 jours, en laissant la date en entier, ca me fait 090601-5=090596 qui est donc plus grand que le 31 Mai (090531) alors que ma date moins 5 c'est le 26 Mai... cette solution marche quand il n'y a pas de saut de moi, mais ca sera pas tjrs le cas, donc il me faut une autre solution


je pense qu'on doit pouvoir convertir la date en date julienne, genre, juste en nombre de jours, et comparer les deux a partir de la, mais je sais pas comment faire... ou alors en timestamp, c'est a dire en seconde, et enlever le nombre de seconde correspondant a 1 jours... mais je sais pas non plus comment faire. Ceci n'est que des idées parmi d'autres... et si vous en avez des meilleures, elles sont les bienvenues !!

Voila, donc si vous avez des pistes de solution, je les prends avec plaisir.

Merci d'avance pour vos réponse.

Steven
A voir également:

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
11 juin 2009 à 15:22
Salut,

Et plus simplement :
date --date='090610 5 days ago' +%y%m%d
;-))
2
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 620
11 juin 2009 à 15:12
hello
ll faut convertir tes dates en secondes, il est alors facile de comparer et d'enlever ou d'ajouter des jours (24 * 3600)
$ date --date "090611" +"%Y %m %d"
2009 06 11
$ date --date "090611" +%Y%d%m
20091106
$ date --date "090611" +%s
1244671200
$ date +%s
1244725309
$ date --date=@1244725309
Thu Jun 11 15:01:49 CEST 2009
$ date --date=@1244725309 +"%Y %m %d"
2009 06 11
0