Error en la coincidencia de la cadena de Apple

3

Lo quiero para que si la fecha actual coincide con la cadena, se registre "¡funciona!". Sin embargo, no parece funcionar.

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

Traté de asegurarme de que ambas son variables de tipo cadena, pero no puedo igualarlas. Esta fue la salida:

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

¿Puede alguien decirme dónde me equivoco?

    
pregunta Bradman175 27.05.2016 - 05:00

2 respuestas

2

Después de intentarlo, llego a la conclusión de que variable set to {day, month, year} of (current date) no es una "cadena" con el formato "día, mes, año" sino "daymonthyear".

Así que puedes cambiar el script a

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

que no es muy elegante.

Alternativamente, puedes elegir:

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

Sin embargo, siempre tienes que agregar el día de la semana en la primera variable.

La mejor propuesta (realizada por el propio OP) es:

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
    
respondido por el klanomath 27.05.2016 - 07:11
2

la respuesta útil de klanomath contiene soluciones viables, pero el enfoque más simple y limpio es comparar elementos de el mismo tipo directamente :

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

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

Ambas variables de fecha ahora contienen listas de 3 elementos ( { ..., ..., ... } ) que se pueden comparar directamente con is equal to o simplemente = .

Tenga en cuenta que May es una constante de mes incorporada que se evalúa como 5 en un contexto numérico (es no una cadena ).

    
respondido por el mklement0 27.05.2016 - 14:51

Lea otras preguntas en las etiquetas