Calculer avec des dates ou des heures

 

Kroc - 03/10/2007 : Suite à un post d'Eric Hassold dans fclt, je me suis rendu compte que le manuel de la commande clock à propos des opérations sur les dates et heures étaient très mal (voire pas) documenté.

Avant tout, voici un petit lexique :

epoch : date initiale à partir de laquelle le temps est mesuré par les systèmes d'exploitation (visible en Tcl avec [clock format 0]).

timestamp : nombre entier qui permet de calculer une date. Dans le cas de [clock second], c'est généralement le nombre de secondes écoulées entre l'epoch et l'instant où clock second est invoqué.

Le problème avec un timestamp, c'est qu'il est dépendant de chaque système d'exploitation (puisque basé sur l'epoch) et qu'on ne peut présumer de sa granularité (même si avec Tcl on sait que [clock second] travaille en secondes alors que [clock clicks -milliseconds] travaille en millisecondes).

De ce fait, le seul moyen fiable pour calculer avec des dates ou des heures est d'utiliser la commande [clock scan], exemple :

 % set demain [clock format [clock scan "now + 1 day"] -format "%d %B %Y"]
 04 octobre 2007

Opérateurs valides : (précédés d'un signe (+ ou -) et d'un entier)

Opérandes valides :

Autres avantages :

Exemples :

 % clock format [clock scan "now -1 day +8 week"] -format "%d %B %Y"
 27 novembre 2007

 % clock format [clock scan "+1 day"] -format "%d %B %Y"
 04 octobre 2007

 % clock format [clock scan "07/01/1970 +1 year"] -format "%d %B %Y"
 07 janvier 1971

 % clock format [clock scan "1999-12-31 11:59:59PM +1 second"] -format "%d %B %Y %H:%M:%S"
 01 janvier 2000 00:00:00