Débuter en AppleScript
La programmation AppleScript en exemples.

framboise
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.

Exemple 1 : Récupérez l'AppleScript ici.

Le Script :


set mon_instant to current date
log
mon_instant

set mon_jour_semaine to weekday of mon_instant
set mon_jour to day of mon_instant
set mon_mois to month of mon_instant
set mon_annee to year of mon_instant

set mes_heures to (time of mon_instant) div 3600
set mes_minutes to ((time of mon_instant) mod 3600) div 60
set mes_secondes to (time of mon_instant) mod 60
set mon_decalage_horaire to ((((time to GMT) / 3600) as integer) as string) & " heure(s)"


log
mon_jour_semaine
log
mon_jour
log
mon_mois
log
mon_annee
log
mes_heures
log
mes_minutes
log
mes_secondes
log
mon_decalage_horaire


Explications :
Tout d'abord, grâce à "set mon_instant to 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.



Exemple 2 : Récupérez l'AppleScript ici.

Le Script :

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


log mon_jour_semaine_fr
log mon_jour_fr
log mon_mois_fr
log mon_annee_fr
log mon_heure_fr
log ma_minute_fr
log ma_seconde_fr


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.



Exemple 3 : Récupérez l'AppleScript ici.

Le Script :

set mon_instant to (current date)
log
mon_instant

set
mon_instant to mon_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_instant to mon_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 :
set temps_restant to 1 * days - (time of (current date))
La valeur prise par "temps_restant" est égale au nombre de secondes entre maintenant et minuit.