Comportamento della data hard-coded in AppleScript

3

Sto progettando un AppleScript che contiene una data hardcoded a cui lo script fa riferimento più volte durante la durata dell'esecuzione. Un esempio è il seguente:

property someDate : date "Monday, 1 January 2018 at 01:00:00 PM"

Come si può vedere, il formato del timestamp è appropriato per la mia regione e il mio paese. Un altro esempio potrebbe essere: Saturday, April 15, 2006 4:29:04 PM o 12/25/04 - che è il formato per altre regioni come gli Stati Uniti - mm/dd/yy .

Sorgono le seguenti domande

  1. Se il mio AppleScript verrà eseguito in altre regioni / paesi (quelli con diversi formati di timestamp, ad esempio mm/dd/yy anziché my dd/mm/yy ), come si comporta AppleScript con la dichiarazione precedente?
  2. Come dovrei assicurarmi che AppleScript convertirà correttamente il timestamp dal mio formato nel rispettivo formato utilizzato dal dispositivo dell'utente finale?

La conversione corretta diventa fondamentale se il formato della data cambia in dd/mm/yy precedentemente menzionato e viene quindi utilizzato in un ambiente mm/dd/yy (regione o paese). In tal caso, l'ordine potrebbe non essere evidente.

Esempio di caso

property someDate : date "02/01/18" come dd/mm/yy sarebbe hardcoded con l'intento di rappresentare 02 gennaio 2018 , ma se usato in una regione diversa (quelli che usano mm/dd/yy ); naturalmente, questo diventerà 01 febbraio 2018 . Vedi il problema?

Poiché le mie ricerche su questo argomento non portano a nulla (e dovrebbero essere specifiche per AppleScript), spero che qualcuno che ha implementato un codice simile possa aiutarmi a chiarire i due punti precedenti. Grazie.

    
posta ProGrammer 01.01.2018 - 07:29
fonte

1 risposta

2

Funziona per me usando l'ultima versione di Sierra

--property the_date : current date
property the_date : date ("Sunday, May 31, 2009 at 4:00:00PM")
property the_year : year of the_date
property the_day : day of the_date
property the_month : month of the_date
property the_hours : hours of the_date
property the_minutes : minutes of the_date
property the_seconds : seconds of the_date
property shortDateString : missing value

make_date(the_year, the_month, the_day, the_hours, the_minutes, the_seconds)

set shortDateString to short date string of the_date
set timeString to time string of the_date
set systemDate to date string of date shortDateString
log timeString
log shortDateString
log systemDate

on make_date(the_year, the_month, the_day, the_hours, the_minutes, the_seconds)
    --set the_date to current date
    set year of the_date to the_year
    set day of the_date to 1
    set month of the_date to the_month
    set day of the_date to the_day
    set hours of the_date to the_hours
    set minutes of the_date to the_minutes
    set seconds of the_date to the_seconds
    return the_date
end make_date

In questo script, ho impostato un valore di data predeterminato come variabile. Con la mia regione installata negli Stati Uniti, nelle preferenze di sistema, ho eseguito lo script e registrato i risultati. Le prime tre righe dei risultati nell'immagine seguente, erano i valori restituiti con il mio sistema impostato nella regione degli Stati Uniti. Successivamente sono tornato alle preferenze di sistema e ho trasferito la mia regione in Ungheria e ho eseguito di nuovo lo script. Le ultime tre righe dei risultati nell'immagine, riflettono i valori di data e ora come se fossi su un computer in Europa (Ungheria)

    
risposta data 02.01.2018 - 21:29
fonte

Leggi altre domande sui tag