AppleScript: Cadena hasta la fecha -- applescript campo con text campo con formatting campo con time camp apple Relacionados El problema

Applescript : String to Date


1
vote

problema

Español

Estoy extrayendo diferentes formatos de fecha de una página web.

e.g. Domingo 10 de septiembre de 2017 / 09/10/2017 / 10 de septiembre de 2017.

En el ejemplo, la fecha es la misma, pero en vivo, las fechas son Completamente aleatorio y diferente. Esto podría ser el 2/2/1985 / noviembre 10, 2005

El primero no importa demasiado ya que esta es la fecha actual, que me estoy generando y puedo cambiarla:

  tell (current date)     set strMonth to (its month as integer)     set strDay to (its day as integer)     set stryear to (its year as integer) end tell  set myOwnDate to strMonth & "/" & strDay & "/" & stryear as string   

El formato que quiero es entero día / mes / año, por lo que 10/09/2017.

¿Puedo cambiar las dos otras cadenas (09/10/2017 / 10 de septiembre de 2017) a este formato?

Original en ingles

I'm extracting different date formats from a web page.

E.g. Sunday 10 September 2017 / 09/10/2017 / September 10th, 2017.

in the example the date is the same, but in live, the dates are completely random and different. This could be 01/2/1985 / November 10th, 2005

The first one doesn't matter too much as this is the current date, which I'm generating myself and I can change it:

tell (current date)     set strMonth to (its month as integer)     set strDay to (its day as integer)     set stryear to (its year as integer) end tell  set myOwnDate to strMonth & "/" & strDay & "/" & stryear as string 

The format I want is integer day/month/year so 10/09/2017.

Can I change the two other strings (09/10/2017 / September 10th, 2017) to this format?

           
 
 

Lista de respuestas

2
 
vote
vote
La mejor respuesta
 

Puede usar el nsdatadetector ( un método de cacao ) para la fecha de análisis de una cadena.

Aquí está el script (probado en Macos Sierra ):

ADVERTENCIA: En una cadena que contiene " dígito / dígito / año ", el script no funciona con una cadena en el " day / mes / Formato de año ", la cadena debe estar en el formato" mes / día / año "

  use framework "Foundation" use scripting additions  (* this script works on these formats:  "Sunday 10th September 2017", "Sunday 10 September 2017", "Sunday 10 September 17", "September 10th, 2017", "September 10th 2017", "September 10 2017"  "10th September 2017", "10 September 2017", "10 Sep 17"  also work with the abbreviation ( e.g. Sep instead of September and Sun instead of Sunday)   also work with the localized name of (the month and the day)  "09/10/2017", "09.10.2017", "09-10-2017" : month_day_year only,  or "2016/05/22", "2016-05-22", "2016.05.22" : year_month_day only  ( month and days could be one or two digits) *)  set myString to "Nov 5th, 2005" set dateString to my stringToDate(myString) --> "05/11/2005"  on stringToDate(thisString) --      tell current application         -- **  finds all the matches for a date, the result is a NSArray **          set m to its ((NSDataDetector's dataDetectorWithTypes:(its NSTextCheckingTypeDate) |error|:(missing value))'s matchesInString:thisString options:0 range:{0, length of thisString})         if (count m) > 0 then             set d to (item 1 of m)'s |date|() -- get the NSDate of the first item              set df to its NSDateFormatter's new() -- create a NSDateFormatter              df's setDateFormat:"dd/MM/yyyy" -- a specified output format: "day/month/year" (day and month = two digits, year = 4 digits)             return (df's stringFromDate:d) as text         end if     end tell     return "" -- no match in this string end stringToDate   
 

You can use the NSDataDetector (a cocoa method) for parsing date from a string.

Here's the script (tested on macOS Sierra):

Warning: on a string which contains "digit/digit/year", the script does not work with a string in the "day/month/year" format, the string must be in the "month/day/year" format

use framework "Foundation" use scripting additions  (* this script works on these formats:  "Sunday 10th September 2017", "Sunday 10 September 2017", "Sunday 10 September 17", "September 10th, 2017", "September 10th 2017", "September 10 2017"  "10th September 2017", "10 September 2017", "10 Sep 17"  also work with the abbreviation ( e.g. Sep instead of September and Sun instead of Sunday)   also work with the localized name of (the month and the day)  "09/10/2017", "09.10.2017", "09-10-2017" : month_day_year only,  or "2016/05/22", "2016-05-22", "2016.05.22" : year_month_day only  ( month and days could be one or two digits) *)  set myString to "Nov 5th, 2005" set dateString to my stringToDate(myString) --> "05/11/2005"  on stringToDate(thisString) --      tell current application         -- **  finds all the matches for a date, the result is a NSArray **          set m to its ((NSDataDetector's dataDetectorWithTypes:(its NSTextCheckingTypeDate) |error|:(missing value))'s matchesInString:thisString options:0 range:{0, length of thisString})         if (count m) > 0 then             set d to (item 1 of m)'s |date|() -- get the NSDate of the first item              set df to its NSDateFormatter's new() -- create a NSDateFormatter              df's setDateFormat:"dd/MM/yyyy" -- a specified output format: "day/month/year" (day and month = two digits, year = 4 digits)             return (df's stringFromDate:d) as text         end if     end tell     return "" -- no match in this string end stringToDate 
 
 
   
   

Relacionados problema

1  ¿Por qué es un AppleScript para modificar los atributos del evento de calendario tan lentos?  ( Why is an applescript to modify calendar event attributes so slow ) 
Estoy tratando de escribir un AppleScript bastante simple para automatizar el proceso de tener eventos de calendario repetirse a granel. Específicamente, quie...

2  ¿Cuáles son algunos buenos recursos para aprender a AppleScript con Xcode 4.3.2?  ( What are some good resources for learning how to applescript with xcode 4 3 2 ) 
i Applescript bastante un poco y me gustaría comenzar a trabajar con Xcode 4.3.2, para que pueda ampliar la funcionalidad de las cosas que estoy escribiendo. ...

0  Mover el mensaje de correo Volver a la bandeja de entrada de la cuenta de Exchange  ( Move mail message back to inbox of exchange account ) 
¿Hay una sintaxis especial para usar AppleScript para mover un mensaje desde una carpeta de nuevo a la bandeja de entrada de una cuenta de Exchange? Tengo u...

12  El comando "Delay" de AppleScript no funciona ya que cambia a Yosemite  ( Applescript delay command not working since switch to yosemite ) 
Nota: El problema con delay se solucionó en OS X 10.11 El Capitan. desde que actualicé a Yosemite, AppleScripts que usan los retrasos han dejado de func...

0  Activar el safari más directo y ejecutar javascript  ( Activate the frontmost safari and run javascript ) 
Estoy tratando de ejecutar javascript en el safari, cuyo frontal es cierto. tell (application "Safari" whose frontmost is true) to do JavaScript theScript ...

2  Automático Para ejecutar script shell con un archivo de texto de entrada, cópielo en el directorio específico  ( Automator to execute shell script with an input text file copy it to specific d ) 
Estoy simplificando hacer un archivo .deb con automatista. Actualmente tengo un script de shell que hace algunas acciones simples - Pregunte al usuario de ...

1  Cómo iterar sobre recordatorios usando AppleScript  ( How to iterate over reminders using applescript ) 
Estoy tratando de escribir un AppleScript que simplemente iere a través de recordatorios incompletos y muestra el nombre. El código a continuación genera este...

1  AppleScript: seleccione un elemento de menú desplegable específico?  ( Applescript select a specific drop down menu item ) 
gente. Soy increíblemente nuevo en AppleScript ... solo empezando a abrir mi mundo para codificar, y pensé que empezaría aquí. (Lo hice básico en la escuela...

0  Use AppleScript para buscar mensaje por tema  ( Use applescript to search for message by subject ) 
AppleScript proporciona un mecanismo para que busque un mensaje por tema; O tengo que escribir un bucle y examinar cada mensaje "a mano". El código a contin...

2  ¿Cómo copiar la URL actual de la página web en la aplicación Fluid con AppleScript / Service y BIND en el atajo de teclado?  ( How to copy current url of web page in fluid app with applescript service and bi ) 
Estoy usando la versión 1.8.6 (2331) de FluidApp en MacOS Sierra 10.12.3. A veces necesito copiar la URL actual de la página web en FluidApp. Quiero hacerlo c...

17  Creando una carpeta comprimida HFS + automatizada  ( Creating an automated hfs compressed folder ) 
Me gustaría configurar una forma automatizada para archivar archivos en OS X Lion. Al archivar, me refiero a usar la función de compresión HFS + en una carpet...

63  ¿Cómo asigno un atajo de teclado a un AppleScript que escribí?  ( How do i assign a keyboard shortcut to an applescript i wrote ) 
¿Cómo asigno un atajo de teclado a un AppleScript? Encontré un script para volver automáticamente a la bandeja de entrada en la oficina 2011. ...

2  Aplicación de dibujo vectorial de scripted (à la satimage sonríe)  ( Scripted vector drawing app %c3%a0 la satimage smile ) 
He usado SMIMAGE's Smile Aplicación para hacer diagramas de vector (para Ilustraciones técnicas, patrones de corte por láser, etc.) a través de AppleScript ...

3  El editor de AppleScript no puede guardar el archivo .CPT  ( Applescript editor cannot save scpt file ) 
He creado un archivo Simple AppleScript .CPT, usando TextEDIT. Si ahora lo abro con el editor de AppleScript, puedo ejecutarlo. Pero cuando intento modifica...

1  Cómo lote Agregar carpetas a las acciones de la carpeta  ( How to batch add folders to folder actions ) 
Gestiono activamente un directorio de carpetas que contienen imágenes que están organizadas por fechas de modificación. Debido a esto, había hecho una acción ...




© 2021 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos


Licensed under cc by-sa 3.0 with attribution required.