4 votes

Manipulation de date Applescript pour obtenir plusieurs formats

Je dois obtenir une date (mois, jour, année) dans plusieurs formats différents pour chaque partie. Ainsi, pour le 2 janvier 1999, j'ai besoin de :

  • le mois en tant que Janvier et Jan et 01 et 1
  • le jour en tant que 2 et 02
  • l'année en tant que 1999 et 99

Je le fais actuellement avec ce bric-à-brac incluant un appel shell à la commande date comme indiqué ci-dessous. Il est clair que je ne connais pas grand-chose à Applescript. Il est également clair qu'il doit exister un moyen plus efficace (niveau code... la performance n'est pas vraiment un problème) !

set {year:y, month:m, day:d} to (current date)
# aka 1999 - January - 2

set shortmonth to text 1 thru 3 of (month of (current date) as text)
# aka Jan

set nummonth to do shell script "date '+%m'"
# aka 01

set dd to text -2 thru -1 of ("00" & (day of (current date)))
# aka 02

set yy to text 3 thru 4 of (y as text)
# aka 99

5voto

markhunte Points 11634
set theMonth to do shell script " date -v2d -v1m -v99y +%B%n%b%n%m%n%-m"

-> "Janvier

Jan

01

1"

set theDay to do shell script " date -v2d -v1m -v99y +%A%n%a%n%d%n%-d"

-> "Samedi

Sam

02

2"

set theYear to do shell script " date -v2d -v1m -v99y +%Y%n%y"

-> "1999

99"

  • -v drapeau ajuste l'élément de date sans changer la date réelle.

  • -v2d est le 2ème jour

  • -v1m est le premier mois

  • -v99y est l'année 1999

    Les formateurs de date sont:

  • %n nouvelle ligne

  • %B nom complet du mois

  • %b nom abrégé du mois

  • %m numéro de mois avec zéro initial

  • %-m numéro de mois sans zéro initial

Les autres formateurs suivent le même principe. Vous pouvez trouver plus d'informations sur le format en faisant simplement une recherche sur Google.

Si vous souhaitez le faire entièrement en AppleScript, je vous suggère de lire MacScripter / Dates & Times in AppleScripts

---------- mise à jour

Je pense que c'est plus efficace de le faire avec le script shell. Mais si j'allais essayer de le faire uniquement en AppleScript, j'utiliserais des gestionnaires pour soit compléter soit raccourcir l'élément. Et je passerais simplement le mois, l'année et le jour à ces gestionnaires pour les trier.

set {year:y, month:m, day:d} to current date
--set m to m + 1

set theYearLong to y as string
set theYearShort to shorten(y)

set theMonthNumberZero to pad((m as integer) as string)
set theMonthNumber to ((m as integer) as string)
set theMonthLong to m as string
set theMonthShort to shorten(m)

set theDayNumberZero to pad((d as integer) as string)
set theDayNumber to ((d as integer) as string)

on pad(thisNumber)
    if length of thisNumber = 1 then
        return "0" & thisNumber
    else
        return thisNumber
    end if
end pad

on shorten(thisItem)

    if class of thisItem is integer then
        return characters 3 thru -1 of (thisItem as text) as string
    else
        return characters 1 thru 3 of (thisItem as text) as string
    end if
end shorten

Il y a probablement une meilleure façon de le faire, mais cet exemple pourrait vous donner une idée..

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X