¿Cuál es la aplicación correcta para llamar para poder usar la fecha?

3

En AppleScript, si tiene una cadena con una fecha e intenta convertirla en una clase de date , se producirá un error en el Finder y en los eventos del sistema. Ejemplo:

set testDate to "Friday, September 21, 2018 at 6:54:29 PM"
set testResult to date testDate
return testResult

reproduce:

Alcolocarelcódigoanteriorenuneventodelsistema:

tellapplication"System Events"
    set testDate to "Friday, September 21, 2018 at 6:54:29 PM"
    set testResut to date testDate
    return testResut
end tell

devuelve:

  

Los eventos del sistema obtuvieron un error: no se puede obtener la fecha "Viernes 21 de septiembre de 2018   a las 6:54:29 pm ".

Intentando colocar lo anterior en un buscador Finder:

tell application "Finder"
    set testDate to "Friday, September 21, 2018 at 6:54:29 PM"
    set testResut to date testDate
    return testResut
end tell
  

El Finder obtuvo un error: no se puede obtener la fecha "Viernes 21 de septiembre de 2018 en   6:54:29 PM ".

¿Qué debo usar para poder convertir una cadena de fecha en una fecha real si ya estoy usando System Events o Finder? La única alternativa que he encontrado es crear un controlador:

tell application "System Events"
    set testDate to "Friday, September 21, 2018 at 6:54:29 PM"
    return my stringDate(testDate)
end tell
on stringDate(theString)
    set attempt to date theString
    return attempt
end stringDate

¿Cómo puedo realizar una conversión de date en un evento del sistema o en el bloque de información de Finder?

Ha habido discusión en los comentarios con la respuesta suministrada, pero dadas las especificaciones del sistema de:

macOS High Sierra versión 10.13.6

y solución copiada:

tell application "System Events"
    set testDate to "Friday, 21 September, 2018 at 6:54:29 PM"
    set testResult to my (date testDate)
end tell

Abrió un nuevo editor de scripts:

Solucióndecódigopegado:

Solucióndecódigocompilado:

SolucióndecódigoRan:

El problema aún persiste.

    
pregunta ʀ2ᴅ2 21.09.2018 - 20:37

1 respuesta

2

Eso es interesante, nunca antes había notado esta rareza de AppleScript. Extrañamente, si crea el objeto date usando una cadena por valor, ni System Events ni Finder tienen un problema:

tell application "System Events"
    set testResult to date "Friday, 21 September 2018 at 6:54:29"
end tell

es una multa absoluta (el formato de mi cadena de fecha es diferente al tuyo, según la configuración de mi sistema).

Solo cuando se hace referencia al valor de la cadena usando una variable, el problema se presenta:

tell application "System Events"
    set testDate to "Friday, 21 September, 2018 at 6:54:29 PM"
    set testResult to date testDate
end tell

como señalaste, se permite not

Solución:

Resulta que la solución es remitir el trabajo al objeto AppleScript de nivel superior usando my (o AppleScript's ):

tell application "System Events"
    set testDate to "Friday, 21 September, 2018 at 6:54:29 PM"
    set testResult to my (date testDate)
end tell

Nota para otros usuarios: Las cadenas de fecha de AppleScript están formateadas de acuerdo con la configuración de fecha / hora de su sistema, por lo tanto, puede copiar y pegar directamente cualquiera de los fragmentos de código anteriores, ya sea el mío o el los OP's - todavía pueden generar un error. Debe determinar el formato apropiado para usar para la cadena de fecha en su sistema, lo que se hace más fácilmente al examinar el valor devuelto por el comando de AppleScript current date , y usarlo como plantilla.

    
respondido por el CJK 21.09.2018 - 22:15

Lea otras preguntas en las etiquetas