mercredi 15 juillet 2009

Comparing dates under shell / Comparer des dates dans le shell

Here is a very easy way to compare dates under the BASH shell under linux.

Use the date function.

Here is a simple example.

Let's say i want to know if this happened more than 30 days ago.

I have two dates

Today: 2009/07/15
Then: 2009/03/21

It would be much trouble trying to compare the year then the month and finally the day and
finding if 30 days have passed or not.

Here comes the date function.

Simply do this

date -d 2009/03/21 +%s

this will give you your date in second since epoch
(lookup wikipedia if you dont know what epoch is)

so then do

date +%s

to get today's date in second since epoch.

All you have to do then is find the amount of second you want to have between the dates.
In our case 30 days is: 30*24h*60m*60s = 2 592 000s

sooo i think you can guess the rest.

Have fun :D

== French version ==

Voici une maniere tres simple de comparer deux dates dans le BASH shell de Linux.

Utiliser la fonction date.

Voici un exemple.

Disont que vous voulez savoir si plus de 30 jours se sont ecouler depuis une certaine date.

Aujourd'hui: 2009/07/15
A ce moment: 2009/03/21

Il serait complique de comparer les annees ensuite les mois et finalement les jours pour
determiner si plus de 30 jours se sont ecouler.

Voila que viens en jeux la fonction date.

Faite simplement ceci:

date -d 2009/03/21 +%s

Ceci va vous donner la date en seconde depuis epoch.
(allez voir wikipedia si vous ne savez pas ce qu'est l'epoch)

donc faite ensuite

date +%s

pour avoir la date d'aujourd'hui en seconde depuis l'epoch

Il ne vous reste plus qua savoir combien de seconde devrait avoir passer entre vos deux dates.
Dans notre cas 30 jours: 30*24h*60m*60s = 2 592 000s

Bon... je crois que vous pouvez devinez le reste.

Amusez vous bien! Et ne courez pas avec des ciseaux.