AppleScript: string até a data -- applescript campo com text campo com formatting campo com time camp apple Relacionado O problema

Applescript : String to Date


1
vote

problema

português

Estou extraindo diferentes formatos de data de uma página da web.

e. Domingo 10 de setembro de 2017/09/10/2017 / 10 de setembro de 2017.

.

No exemplo, a data é a mesma, mas em viver, as datas são Completamente aleatório e diferente. Isto poderia ser 01/2/1985 / novembro 10 de 2005

O primeiro não importa muito, pois esta é a data atual, que estou me gerando e posso alterá-lo:

  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    

O formato que eu quero é um dia inteiro / mês / ano então 10/09/2017.

Posso alterar as duas outras seqüências (09/10/2017 / setembro 10, 2017) para este formato?

english

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 respostas

2
 
vote
vote
Melhor resposta
 

Você pode usar o nsdatadetector ( um método de cacau ) para a data de análise de uma string.

Aqui está o roteiro (testado em macos sierra ):

Aviso: em uma string que contém " dígito / dígito / ano ", o script não funciona com uma string no " dia / mês / ano "formato, a string deve estar no formato" mês / dia / ano / strong> "

  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 
 
 
   
   

Perguntas relacionadas

1  Como mudar o tempo no iPhone  ( How to change time on iphone ) 
Eu tenho um iPhone 4s executando o iOS 9. Eu não consigo descobrir como alterar o tempo. Como faço para alterar o tempo nele? ...

3  Como a Apple corrigiu o inseto do tempo do Unix? [duplicado]  ( How did apple fix the unix time bug ) 
. Esta pergunta já tem respostas aqui : Causa do Unix Epoch Time Integer Underflow? [FECHADO] ...

1  Não é possível excluir backups da máquina do tempo - erro 8072 [duplicado]  ( Cant delete time machine backups error 8072 ) 
. Esta pergunta já tem respostas aqui : não pode excluir os backups da máquina de tempo antigo ...

32  Maneiras alternativas de definir um temporizador sobre macos  ( Alternative ways to set a timer on macos ) 
Estou tentando definir um temporizador na MacOS sem sucesso, pois o Siri me solicita a definir um lembrete: A maioria, se não todos os aplicativos encont...

1  AppleScript: string até a data  ( Applescript string to date ) 
Estou extraindo diferentes formatos de data de uma página da web. e. Domingo 10 de setembro de 2017/09/10/2017 / 10 de setembro de 2017. . No exemplo, a d...

4  Não é possível fazer com que a Apple Watch Thime na hora?  ( Is it not possible to make apple watch chime on the hour ) 
É muito comum ter relógios anunciar o começo de um novo intervalo de tempo (digamos para Beep a cada hora). O Mac OS X permite que os usuários tenham o sistem...

0  Sincronizar com o servidor de tempo no iPad (data / hora) via WiFi?  ( Sync with time server on ipad date time via wifi ) 
Estamos implantando iPads em um ambiente corporativo. Temos um caso de uso específico em que usaremos apenas um aplicativo para uso interno. Tentamos bloquear...

3  Revertendo o horário de verão  ( Reverting daylight saving time ) 
Estou correndo El Capitan 10.11.6 (15g21013) no Brasil. mais cedo hoje minha máquina mudou para o DST, o que seria bom se a data oficial para o interruptor ...

0  Calculando o tempo com o AppleScript  ( Calculating time with applescript ) 
Eu criei um começo para registrar uma "hora de início" e salvar em um arquivo de plist e um outro script para ler a hora de início e calcular o número de temp...

0  MacBook Air, Mac Mail - 12h em vez de 24 horas de relógio em respostas  ( Macbook air mac mail 12h instead of 24h clock in replies ) 
Eu tenho as preferências do sistema definido para um relógio 24h no meu MacBook Air, usando Mojave. No Mac Mail, os e-mails que envio e recebo mostram o t...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.