Estoy diseñando un AppleScript que contiene una fecha codificada a la que el script hace referencia varias veces a lo largo 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 los Estados Unidos - mm/dd/yy
.
Se plantean las siguientes cuestiones
- Si mi AppleScript se ejecutará en otras regiones/países (aquellos con diferentes formatos de marca de tiempo, por ejemplo
mm/dd/yy
en lugar de midd/mm/yy
), ¿cómo se comporta AppleScript con la declaración anterior? - ¿Cómo puedo asegurarme de que AppleScript convierta 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 anteriormente mencionado dd/mm/yy
y se utiliza en un mm/dd/yy
entorno (región o país). En ese caso, el orden puede no ser evidente.
Ejemplo de caso
property someDate : date "02/01/18"
como dd/mm/yy
se codificaría con la intención de representar 02 de enero de 2018 pero cuando se utiliza en una región diferente (los que utilizan 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 ninguna parte rápidamente (y debe ser específica para AppleScript), espero que alguien que haya implementado un código similar pueda ayudarme a aclarar los dos puntos anteriores. Gracias.
0 votos
Bien, poniendo mi sistema en Nueva Zelanda, donde creo que vives, y compilando
property someDate : date "Monday, 1 January 2018 at 01:00:00 PM"
en el editor de script la `at` se elimina, pero compila. Tambiéncurrent date
devuelve el mismo formato pero sin elat
. Dicho esto, volviendo a mi configuración normal no compila y devuelveSyntax Error Invalid date and time date Monday, 1 January 2018 at 01:00:00 PM.
. Yo que tú respondería a la pregunta que hice anteriormente, que era: ¿Por qué estás poniendo unproperty
a un fijodate
¿Qué propósito tiene en la script ?0 votos
Mi intención es codificar una fecha base a partir de la cual se puedan calcular otras (por ejemplo, los días que faltan para esta fecha de caducidad). El uso de una propiedad parece apropiado ya que no debería cambiar una vez compilada; sin embargo, supongo que
set someDate to date "..."
también funcionaría (así no me limitaría a una declaración de propiedades). Espero que esto responda a la última parte. Otra forma podría serset someDate to the current date
set the month of someDate to 1
set the day of someDate to 2
set the year of someDate to 2018
. Esperando no sólo escribir una marca de tiempo concisa, sino también aprender la forma correcta de implementar una solución global.0 votos
Tenía la sensación de que eso es lo que estabas haciendo. Una de las formas es grabar el
current date
en tiempo de la época a un archivo plist y utilizar ese valor para calcular contra. Supongo que se podría almacenar en una propiedad en la primera ejecución. De cualquier manera usted sería capaz de calcular en contra de ella.0 votos
Veo tu pensamiento pero eso no sirve como validación si se puede ajustar editando el archivo plist. Creo que voy a dar la opción alternativa (mencionado en mi comentario anterior) un intento, tal vez de esa manera todo puede ser contenida dentro de un documento y el trabajo a través de las regiones. No se me ocurren otras formas "seguras" de realizar la conversión adecuada.
0 votos
Nunca dije que fuera bueno, sólo una de las formas en que los desarrolladores lo hacen. Se puede establecer como
property
pero hazlo en tiempo de la época y no una fecha legible para el ser humano como la que intentas hacer.