La corrispondenza della stringa di applescript non è riuscita

3

Lo voglio in modo che se la data corrente corrisponde alla stringa, registrerà "funziona!". Tuttavia non sembra funzionare.

set datesubmit to "27, May, 2016"
set trydate to {day, month, year} of (current date)
log (trydate)
log (datesubmit)
if trydate is equal to datesubmit then
    log ("works!")
end if

Ho cercato di assicurarmi che fossero entrambe variabili di tipo stringa ma non riesco a ottenerle uguali. Questo è stato l'output:

(*27, May, 2016*)
(*27, May, 2016*)

Qualcuno può dirmi dove ho sbagliato?

    
posta Bradman175 27.05.2016 - 05:00
fonte

2 risposte

2

Dopo alcuni tentativi, giungo alla conclusione che un variable impostato to {day, month, year} of (current date) non è una "stringa" con il formato "giorno, mese, anno" ma "daymonthyear".

Quindi puoi cambiare lo script in

set datesubmit to "27May2016"
set trydate to {day, month, year} of (current date)
log (datesubmit)
log (trydate)
if trydate as string is equal to datesubmit then
    log ("works!")
else
    log ("doesn't work!")
end if

che non è molto elegante.

In alternativa puoi scegliere:

set datesubmit to "Friday 27 May 2016"
set trydate to date string of (current date)
log (datesubmit)
log (trydate)
if trydate is equal to datesubmit then
    log ("works!")
else
    log ("doesn't work!")
end if

Devi sempre aggiungere il giorno della settimana nella prima variabile.

La migliore proposta (creata dall'OP stesso) è:

set datesubmit to "27, May, 2016"
set trydate to day of (current date) & ", " & month of (current date) & ", " & year of (current date) as string
log (datesubmit)
log (trydate)
if trydate is equal to datesubmit then
    log ("works!")
else
    log ("doesn't work!")
end if
    
risposta data 27.05.2016 - 07:11
fonte
2

La risposta utile di klanomath contiene soluzioni valide, ma l'approccio più pulito e più semplice è quello di confrontare gli elementi di lo stesso tipo direttamente :

set datesubmit to {27, May, 2016}
set trydate to {day, month, year} of (current date)

if trydate = datesubmit then
    log "works!"
end if

Entrambe le variabili di data ora contengono elenchi di 3 elementi ( { ..., ..., ... } ) che possono essere confrontati direttamente con is equal to o semplicemente = .

Tieni presente che May è una costante di mese incorporata che valuta 5 in un contesto numerico (è non a stringa ).

    
risposta data 27.05.2016 - 14:51
fonte

Leggi altre domande sui tag