Come posso verificare se l'anno bisestile in AppleScript?

0

Il seguente codice serve a verificare se si tratta di un anno bisestile una volta che il programma rileva che il mese corrente è febbraio.

Il codice "if" sembra abbastanza ridondante.

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
    
posta Varela Margarita 01.11.2018 - 18:00
fonte

1 risposta

2

Un approccio alternativo potrebbe essere quello di chiedere il mese del 29 febbraio. In un anno non bisestile, dovrebbe restituire "Marzo".

month of date "2/29/2018"

Questo mostra l'approccio, ma come sottolineato nei commenti, quanto sopra viene automaticamente compilato in una lunga data.

Per affrontare questo problema e per fornire flessibilità nell'anno, questo restituirà 'Febbraio' in un anno bisestile e 'Marzo' altrimenti.

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

- > Marzo

Incorporando il codice della domanda, potrebbe apparire come questo. L'ho ordinato in questo modo in modo da liberare i nemici prima per più mesi.

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
    
risposta data 21.11.2018 - 23:12
fonte

Leggi altre domande sui tag