¿Cómo puedo verificar si el año bisiesto en AppleScript?

0

El siguiente código es para verificar si es un año bisiesto una vez que el programa detecte que el mes actual es febrero.

El código "si" parece bastante redundante.

set MM to month of (current date) as number
if (MM = 2) then

    set YY to year of (current date)
    if (YY mod 400 = 0) then
        set Prefix to Gregorian_Leap
    else if (YY mod 100 = 0) then
        set Prefix to Gregorian_28
    else if (YY mod 4 = 0) then
        set Prefix to Gregorian_Leap
    else
        set Prefix to Gregorian_28
    end if

else if (MM = 4 or MM = 6 or MM = 9 or MM = 11) then
    set Prefix to Gregorian_30
else
    set Prefix to Gregorian_31
end if
    
pregunta Varela Margarita 01.11.2018 - 18:00

1 respuesta

2

Un enfoque alternativo sería solicitar el mes del 29 de febrero. En un año sin salto, debería regresar 'marzo'.

month of date "2/29/2018"

Esto muestra el enfoque, pero como se señala en los comentarios, lo anterior se compila automáticamente en una fecha larga.

Para abordar esto y también para proporcionar flexibilidad con respecto al año, esto devolverá "Febrero" en un año bisiesto, y "Marzo" de lo contrario.

month of date ("2/29/" & (year of (current date) as text))

- > Marzo

Incorporando el código de la pregunta, podría verse así. Lo ordené de esta manera para rescatar a los otros más temprano durante más meses.

set g31 to {1, 3, 5, 7, 8, 10, 12}
set g30 to {4, 6, 9, 11}

set MM to month of (current date) as integer

if g31 contains MM then
    set Prefix to "Gregorian_31"
else
    if g30 contains MM then
        set Prefix to "Gregorian_30"
    else
        if month of date ("2/29/" & (year of (current date))) as integer = 2 then
            set Prefix to "Gregorian_Leap"
        else
            set Prefix to "Gregorian_28"
        end if
    end if
end if
    
respondido por el Mockman 21.11.2018 - 23:12

Lea otras preguntas en las etiquetas