Comportamiento de la fecha codificada en AppleScript

3

Estoy diseñando un AppleScript que contiene una fecha codificada a la que el script se refiere varias veces a lo largo de la duración de la ejecución. Un ejemplo es el siguiente:

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

Como se puede ver, el formato de la marca de tiempo es apropiado para mi región y país. Otro ejemplo sería: Saturday, April 15, 2006 4:29:04 PM o 12/25/04 , que es el formato para otras regiones como EE. UU. - mm/dd/yy .

Surgen las siguientes preguntas

  1. Si mi AppleScript se ejecutará en otras regiones / países (aquellos con diferentes formatos de marca de hora, por ejemplo, mm/dd/yy en lugar de mi dd/mm/yy ), ¿cómo se comporta AppleScript con la declaración anterior?
  2. ¿Cómo debo asegurarme de que AppleScript convertirá correctamente la marca de tiempo de mi formato al formato respectivo utilizado por el dispositivo del usuario final?

La conversión adecuada se vuelve crítica si el formato de la fecha cambia al dd/mm/yy mencionado anteriormente y luego se usa en un entorno mm/dd/yy (región o país). En ese caso, el orden puede no ser aparente.

Caso de ejemplo

property someDate : date "02/01/18" as dd/mm/yy estaría codificado con la intención de representar 02 de enero de 2018 , pero cuando se usa en una región diferente (aquellas que usan mm/dd/yy ); naturalmente, esto se convertirá en 01 de febrero de 2018 . ¿Ves el problema?

Como mi investigación sobre esto no lleva a ningún lado rápido (y debería ser específico a AppleScript), espero que alguien que haya implementado un código similar pueda ayudarme a aclarar los dos puntos anteriores. Gracias.

    
pregunta ProGrammer 01.01.2018 - 07:29

1 respuesta

2

Esto me funciona con la última versión de 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

En este script, establezco un valor de fecha predeterminado como variable. Con mi región configurada para Estados Unidos, en las preferencias del sistema, ejecuté el script y registré los resultados. Las primeras tres líneas de los resultados en la siguiente imagen fueron los valores devueltos con mi sistema configurado en la región de Estados Unidos. Luego volví a las preferencias del sistema, cambié mi región a Hungría y volví a ejecutar el script. Las últimas tres líneas de los resultados en la imagen, reflejan los valores de fecha y hora como si estuviera en una computadora en Europa (Hungría)

    
respondido por el wch1zpink 02.01.2018 - 21:29

Lea otras preguntas en las etiquetas