1 votos

Manipulación de fechas con Applescript para obtener múltiples formatos

Necesito obtener una fecha (mes, día, año) en múltiples formatos diferentes para cada parte. Así, para el 2 de enero de 1999 necesito:

  • el mes como January y Jan y 01 y 1
  • el día como 2 y 02
  • el año como 1999 y 99

Actualmente lo estoy haciendo con este batiburrillo que incluye una llamada de shell al date como se ve a continuación. Está claro que no sé mucho sobre Applescript. También es evidente que tiene que haber una manera más eficiente (en cuanto a código... el rendimiento no es realmente un problema).

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

Malik hassan Puntos 16
 set theMonth to do shell script " date -v2d -v1m -v99y +%B%n%b%n%m%n%-m"

-> "Enero

Jan

01

1"

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

-> "Sábado

Sat

02

2"

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

-> "1999

99"

  • La bandera -v ajusta el elemento de la fecha sin cambiar la fecha real.

  • -v2d es el segundo día

  • -v1m es el primer mes

  • -v99y es el año 1999

    Los formateadores de fechas son:

  • %n nueva línea

  • %B nombre completo del mes

  • %b abbr nombre del mes

  • %m número de mes con cero a la izquierda

  • %-m número del mes sin el cero a la izquierda

Los demás formateadores siguen el mismo camino. Puedes encontrar más información sobre los formatos simplemente buscando en Google.

Si quieres hacerlo todo en applescript entonces te sugiero que leas MacScripter / Fechas y horas en AppleScripts

---------- actualización

Sí creo que es más eficiente hacerlo con el shell script. Pero si yo fuera a tratar de hacerlo en Applescript solo. Utilizaría manejadores para rellenar o acortar el artículo. Y el sólo pasar el mes, año y día a ellos para ordenar.

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

Probablemente haya una forma mejor de hacerlo pero este ejemplo puede darte una idea..

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X