Le temps et les dates. Quel que soit le langage de programmation et la plate-forme utilisée, il est impératif de connaitre la syntaxe liée aux dates et au temps. Nous allons tout d'abord voir comment connaitre la date et l'heure courante et ensuite comment effectuer des calculs sur une date.
Explications : Tout d'abord, grâce à "setmon_instantto current date" on connait la date et l'heure courante. On utilisera "weekday of", " day of", … pour connaitre chacun des 7 éléments constituant la date : le jour de la semaine, le jour, le mois, l'année, les heures, les minutes et les secondes. On notera que l'heure est codée sous la forme d'un chiffre représentant le nombre de seconde écoulées depuis minuit.
Il existe également une fonction "time to GMT" qui permet de connaitre le fuseau horaire.
Astuces : • Il est impératif d'avoir cliqué sur "Event Log" dans la fenêtre de Script Editor pour voir le résultat du script. • Attention, si vous utilisez un format de date et heure (dans les préférences du système) qui ne correspond pas à la langue de l'OS, vous obtiendrez des résultats déroutants. Par exemples, si votre OS est en anglais et que le format de date est en français, vous obtiendrez "dimanche 27 mars 2005 16:00:56" comme date mais "Sunday" et "March" comme jour de la semaine et comme mois. Cela implique qu'il faudra tenir compte de cette particularité si un test est effectué sur une date.
set mon_instant to current date
set en_francais to mon_instant as string
set mon_jour_semaine_fr to 1st word of en_francais
set mon_jour_fr to 2nd word of en_francais
set mon_mois_fr to 3rd word of en_francais
set mon_annee_fr to 4th word of en_francais
set mon_heure_fr to 5th word of en_francais
set ma_minute_fr to 6th word of en_francais
set ma_seconde_fr to 7th word of en_francais
Explications : Il est intéressant de constater qu'on peut transformer une date en chaîne de caractères (set en_francais to mon_instant as string) et ensuite pouvoir récupérer chacun des "mots" de la "phrase". Ainsi on pourra obtenir les heures, minutes et secondes sans le moindre calcul. Comme précédemment, on obtient une chaîne de caractères qui dépend de la région choisie dans l'onglet Formats du panneau International dans les préférences système.
Le Script : setmon_instantto(current date)
log mon_instant
set mon_instanttomon_instant+1* weeks +4* days +2* hours +30* minutes
log mon_instant
Explications : Il faut garder en tête que "weeks", "days" et "hours" sont des constantes et non des unités. Il faut donc toujours les multiplier par une quantité. Il n'existe pas de constantes pour les secondes car par défaut, on parle en secondes. Par exemple, le résultat de set mon_instanttomon_instant+1 sera égal à l'heure courante plus une seconde. Il n'existe pas de constante pour le mois ni pour l'année, tout simplement car ce ne sont pas des valeurs constantes.
Astuces : Il est possible de faire d'autres opérations avec les dates comme des comparaisons ou des soustractions. Imaginons qu'on veuille connaitre le temps qu'il reste avant minuit ; c'est-à-dire le nombre de secondes entre l'heure actuelle et minuit soit 24 heures ou encore un jour. Il suffira d'écrire ceci : settemps_restantto1* days -(time of(current date)) La valeur prise par "temps_restant" est égale au nombre de secondes entre maintenant et minuit.