clock
La curiosité n’est pas un vilain défaut mais une qualité fondamentale.
clock- Obtient et manipule l'heure
SYNTAXE
clock option ?arg arg ...''
DESCRIPTION
Cette commande effectue l'une des opérations qui permettent d'obtenir ou de manipuler des chaînes ou des valeurs qui représentent une notion de temps. L'argument option détermine l'action effectuée par la commande. Les options légales (qui peuvent être abrégées) sont:
clock clicks ?-milliseconds?
Retourne une valeur haute-résolution de l'heure en tant que valeur entière dépendante du système. L'unité de valeur dépend du système mais est la plus haute résolution d'horloge disponible sur le système tel un cycle CPU. Si -milliseconds est spécifié, alors on a la garantie que la valeur a une granularité de la milliseconde. Cette valeur ne doit être utilisée que pour la mesure relative du temps écoulé.
clock format clockValue ?-format string? ?-gmt boolean?
Convertit un entier représentant un temps, typiquement renvoyé par clock seconds, clock scan, ou les options atime, mtime, ou ctime de la commandefile, en une forme compréhensible. Si l'argument -format est présent l'argument suivant est une chaîne qui décrit comment date et l'heure doivent être formatés. Les descripteurs de champs sont constitués d'un % suivi par un caractère descripteur de champ. Tous les autre caractères sont copiés dans résultat. Les descripteurs de champs valides sont:
- %% Insère un %.
- %a Nom abrégé d'un jour de la semaine (Mon, Tue, etc.).
- %A Nom complet d'un jour de la semaine (Monday, Tuesday, etc.).
- %b Nom abrégé d'un mois (Jan, Feb, etc.).
- %B Nom complet d'un mois
- %c Date et heure Locale spécifique.
- %d Jour du mois (01 - 31).
- %H Heure en format 24-heure (00 - 23).
- %I Heure en format 12-heure (00 - 12).
- %j Jour de l'année (001 - 366).
- %m Numéro du mois (01 - 12).
- %M Minute (00 - 59).
- %p indicateur AM/PM.
- %S Secondes (00 - 59).
- %U Semaine de l 'année (00 - 52), Dimanche est le premier jour de la semaine.
- %w Numéro du jour de la semaine. (Dimanche = 0).
- %W Semaine de l 'année (00 - 52), Lundi est le premier jour de la semaine
- %x Format de Date Locale.
- %X Format d'Heure Locale.
- %y Année sans siècle (00 - 99).
- %Y Année avec siècle (ex. 1990)
- %Z Nom de Time zone.
De plus, les descripteurs de champs suivants peuvent être supportés sur quelque systèmes (ex. Unix mais pas Windows):
- %D Date comme %m/%d/%y.
- %e Jour du mois (1 - 31), sans le zéro complémentaire.
- %h Nom abrégé d'un mois.
- %n Insère un saut de ligne.
- %r Heure comme %I:%M:%S %p.
- %R Heure comme %H:%M.
- %t Insère une tabulation.
- %T Heure comme %H:%M:%S.
Si l'argument - format n'est pas spécifié, la chaîne de formatage "%a %b %d %H:%M:%S %Z %Y" est utilisée. Si l'argument -gmt est présent il doit être suivi d'un booléen qui s'il est vrai spécifie que l'heure doit être formatée comme une heure Greenwich Mean Time. S'il est faux, la timezone locale définie par l'environnement d'exploitation est utilisée.
clock scan dateString ?-base clockVal? ?-gmt boolean?
Convertit dateString en une valeur d'horloge entière (voir clock seconds). Cette commande peut virtuellement analyser et convertir toute chaîne de date et/ou d'heure standard, qui peut inclure des mnémoniques timezone standards. Si une heure est spécifiée seule, la date courante est supposée. Si la chaîne ne contient pas de mnémoniques timezone, la timezone locale est supposée, à moins que l'argument -gmt soit vrai, auquel cas la valeur horloge est calculée en présumant que l'heure spécifiée est relative à Greenwich Mean Time. -gmt, si spécifié, affecte seulement la valeur de l'heure calculée; elle n'influe pas sur l'interprétation de -base. Si le flag -base est spécifié, l'argument suivant doit contenir une valeur horloge entière. Seule la date de cette valeur est utilisée, pas l'heure. Ceci est utile pour déterminer l'heure d'un jour spécifique ou faire d'autres conversions relatives à la date. La dateString est constitué de zéro ou plus éléments de la forme suivante: time L'heure du jour, qui est de la forme: hh?:mm?:ss?? ?meridian? ?zone? ou hhmm ?meridian? ?zone?. Si méridien n'est spécifié, hh est interprété sur une horloge 24-heures. date Une date mois et jour spécifique avec l'année optionnelle. Les formats acceptables sont mm/dd?/yy?, monthname dd ?, yy?, dd monthname ?yy?, day, dd monthname yy, ?CC?yymmdd, ?CC?yy-mm-dd, dd-monthname-?CC?yy. L'année par défaut est l'année courante. Si l'année est inférieure à 100, les années 00-68 seront interprétées 2000-2068 et les années 69-99 comme 1969-1999. Toutes les plate-formes ne savent pas représenter les années 38-70, aussi l'utilisation de ces années peut entraîner une erreur. ISO 8601 point-in-time Une spécification ISO 8601, telle que CCyymmddThhmmss, ou T est le littéral T, CCyymmdd hhmmss, ou CCyymmddThh:mm:ss. relative time Une spécification relative à l'heure courante. Le format est number unit , les unités acceptables sont year, fortnight, month, week, day, hour, minute (ou min), et second (ou sec). L'unité peut être donnée au singulier ou au pluriel, comme dans 3 weeks. Ces modificateurs peuvent aussi être: tomorrow, yesterday, today, now, last, this, next, ago. La date actuelle est calculée selon les étapes suivantes. D'abord, toute date et/ou temps absolu est traitée et convertie. Partant de cet instant comme base, les spécifications du jour de la semaine sont ajoutées. Ensuite, des spécifications relatives sont utilisées. Si une date ou un jour est spécifié, et qu'aucune heure absolue ou relative n'est donnée, minuit est utilisé. Finalement, une correction est appliquée ainsi l'heure du jour correcte est produite après les rectifications pour l'heure d'été et la date correcte est donnée au passage de la fin d'un mois long à un mois court. La correction d'heure d'été est appliquée seulement quand l'heure relative est spécifiée dans les unités de jour ou plus, c.a.d., jours, semaines, quinzaines, mois ou années. Ceci signifie que quand on change d'heure, des résultats différents seront donnés pour clock scan "1 day" et clock scan "24 hours": % clock scan "1 day" -base [clock scan 1999-10-31] 941443200 % clock scan "24 hours" -base [clock scan 1999-10-31] 941439600
clock seconds
Retourne l'heure et la date courante comme valeur entière dépendante du système . L'unité de valeur est la seconde, lui permettant d'être utilisée pour les calculs de temps relatif. La valeur est usuellement définie comme le temps total écoulé depuis un "epoch". Vous ne pouvez présumer la valeur de l'epoch.
Discussion
- Extrait de fr.comp.lang.tcl
http://groups.google.com/group/fr.comp.lang.tcl/browse_frm/thread/ec73b278352d3234 De : Eric Hassold - afficher le profil Date : Lun 9 oct 2006 01:12 E-mail : Eric Hassold <hass...@evolane.com> Groupes : fr.comp.lang.tcl Note : (1 utilisateur) Miko a écrit : >> le numéro du jour de l'année (1 - 365) et l'année en cours (2000- 2100 >> me suffira....) Jusqu'au 19 janvier 2038, tout va aller pour toi. Mais si tu veux vraiment que ça marche jusqu'en 2100, tu vas être déçu avec les clock scan/format sous Tcl 8.4, pour la simple raison que l'epoch est représente par un entier 32 bits signe, avec sous la plupart des machines (pas toutes, mais Linux et Win32 par exemple) le 01/01/1970 comme référence : % clock format 0 Thu Jan 01 00:00:00 UTC 1970 et que donc le mieux que saura faire clock avec est: % clock format 0x7fffffff mar jan 19 04:14:07 CET 2038 qui se gâtera avec: % clock scan {2035-01-01} 2051222400 % clock scan {2040-01-01} unable to convert date-time string "2040-01-01 % clock format 0x80000000 Fri Dec 13 20:45:52 UTC 1901 La bonne nouvelle, c'est que d'ici la (et espérons un peu avant quand même), Tcl 8.5 sera finalise, et que tu pourras profiter de son support très étendu des dates, avec enter autre epoch sur 64 bits. Y'a même dans 8.5 plein d'autres trucs super "marrants", comme la localisation géographique (e.g. -locale fr_FR), ou le support du calendrier julien et grégorien avec gestion correcte du passage de l'un a l'autre quand on fait justement des "+XXXdays" autour de la date de basculement, en gérant même cette date en fonction du pays! Pas forcement d'un usage courant pour tous, mais cette réécriture from scratch de la commande "clock" dans Tcl 8.5 vaut vraiment le coup d’œil. Éric
VOIR ÉGALEMENT
Calculer avec des dates ou des heures
Mis à jour le 19 septembre 2012 à 11:58 CEST par Stéphane Aulery