Qual è l'applicazione corretta da chiamare per poter usare la data?

3

In AppleScript se hai una stringa con una data e provi a convertirla in una classe di date , si verificheranno errori in Finder e System Events. Esempio:

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

rende:

Quandoinserisciilcodicesoprainuneventodisistema:

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

restituisce:

System Events got an error: Can’t get date "Friday, September 21, 2018 at 6:54:29 PM".

Cercare di posizionare il precedente in un Finder dice:

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

Finder got an error: Can’t get date "Friday, September 21, 2018 at 6:54:29 PM".

Che cosa dovrei usare per essere in grado di convertire una stringa di data in una data effettiva se sto già utilizzando System Events o Finder? L'unica alternativa che ho trovato è creare un gestore:

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

Come posso eseguire una conversione di date in un evento di sistema o in un blocco di ricerca del Finder?

C'è stata una discussione nei commenti con la risposta fornita, ma date le specifiche del sistema di:

macOS High Sierra versione 10.13.6

e soluzione copiata:

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

Aperto un nuovo Script Editor:

Soluzionedicodiceincollato:

Soluzionedicodicecompilato:

SoluzionedicodiceRan:

Il problema persiste ancora.

    
posta ʀ2ᴅ2 21.09.2018 - 20:37
fonte

1 risposta

2

È interessante, non avevo mai notato prima questa stranezza di AppleScript. Stranamente, se crei l'oggetto date utilizzando una stringa per valore, né Eventi di sistema Finder ha un problema:

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

è assoluto (il formato della mia stringa di data è diverso dal tuo, come da impostazioni del mio sistema).

È solo quando fai riferimento al valore della stringa usando una variabile che il problema si presenta:

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

come hai sottolineato, non consentito.

Soluzione:

Risulta che la soluzione consiste nel riferire il lavoro all'oggetto AppleScript di livello superiore utilizzando 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 per gli altri utenti: le stringhe di data di AppleScript sono formattate in base alle impostazioni di data / ora del tuo sistema, quindi copia diretta e incolla di uno qualsiasi dei snippet sopra elencati l'OP-potrebbe ancora generare un errore. È necessario determinare il formato appropriato da utilizzare per la stringa di data sul sistema, operazione che viene eseguita più facilmente esaminando il valore restituito dal comando AppleScript current date e utilizzandolo come modello.

    
risposta data 21.09.2018 - 22:15
fonte

Leggi altre domande sui tag