2017-01-31 1 views
0

다음과 같은 내용이 다소 혼란 스럽다면 실망 할 것입니다. 첫 번째 게시물은 물론 처음으로 내가 가지고있는 문제에 대해 설명하려고합니다.AppleScript, 날짜 시간

XML 데이터를 컬 회사에서 운송 회사의 공개 API로 가져 오는 스크립트가 있습니다. 그것은 데이터를 파싱하고 "Line"이라는 이름의 모든 XML 요소를 배열에 넣습니다. 그런 다음 반복을 통해 해당 요소를 하나씩 살펴보고 XML 요소의 데이터가 포함 된 변수를 만듭니다.

이제 XML 요소 중 하나에 "2017-01-31T14 : 04 : 00"과 같이 dateTtime 형식의 출발 시간 값이 포함됩니다. 그 값을 변수에 넣은 다음 시간과 날짜를 구분하고 싶습니다. 그래서 AppleScript의 텍스트 항목 구분 기호를 사용하여 "T"로 설정 한 다음 이전 텍스트 항목 "텍스트 항목 2"로 설정 한 변수를 만듭니다. 잘 작동하고, 변수에 저장된 시간 데이터를 얻습니다.

이제 해당 변수에 AppleScript로 "date of time"을 사용하여 시간을 초 단위로 표시하려고합니다. 여기가 고장 난다. "시스템 이벤트에 오류가 발생했습니다 : XML 파일"Macintosh HD : 사용자 : John : Desktop : my_xml_file.xml "의 날짜"14:04:00 "을 문자열을 변경할 수 없다는 오류 메시지가 나타납니다. ".

그런 다음
set departure to "2017-01-31T14:04:00" as text 
set AppleScript's text item delimiters to "T" 
set depTime to text item 2 of departure 
display dialog depTime 
display dialog time of date (depTime as string) 

나는 초 정확한 수없고 오류를 표시하는 대화 상자를 얻을 :

set theXMLFile to "/Users/John/Desktop/my_xml_file.xml" 

set poster to {} 

tell application "System Events" 
    set xmlData to XML file theXMLFile 
    tell contents of xmlData 
     try 
      set poster to XML elements of XML element "Lines" of XML element "GetDepartureArrivalResult" of XML element "GetDepartureArrivalResponse" of XML element "soap:Body" of XML element "soap:Envelope" whose name is "Line" 
      repeat with i from 1 to (count poster) 
       set departure to value of XML element "JourneyDateTime" of item i of poster as text 
       set AppleScript's text item delimiters to "T" 
       set depTime to text item 2 of departure 
       display dialog time of date (depTime as string) 
       set AppleScript's text item delimiters to "" 
      end repeat 
     on error errStr 
      display dialog errStr 
     end try 
    end tell 
end tell 

것은 내가 다음에 테스트 스크립트에서이 코드를 수정하는 경우 : 여기

코드입니다 메시지.

난 그냥 당신이 원하는 시간의 개념을 처리하지 않습니다 잘못 =/

답변

0

시스템 이벤트를 뭘하는지 알아낼 수 없습니다. 이 같은 대신 "나"를주기 :

  set departure to value of XML element "JourneyDateTime" of item i of poster as text 
      set AppleScript's text item delimiters to "T" 
      set depTime to text item 2 of departure 
      tell me to display dialog time of date (depTime as string) 
      set AppleScript's text item delimiters to "" 
+0

감사합니다. '설정 depTimeSeconds을 내 getTimeInSeconds (depTime)' 및 getTimeInSeconds에 '(MYTIME) \t 설정 tempDate에 : 나는 당신의 게시물을 읽을 :) – FrassesFik

+0

전에 내가 사용하여 해결하기 위해 관리하는 것을 시도하고 기억합니다 to date myTime \t tempSeconds to tempDate를 설정하십시오. \t return tempSeconds end getTimeInSeconds 끝 – FrassesFik

+0

처리기를 사용하면 System Events tell 블록을 그대로두기 때문에 작동합니다. 그것을하는 또 다른 방법은 시스템 이벤트 블록 내에서 "나"라고 말하면서 –

0

문제는 문자열에서 날짜를 구성하는 시스템 환경 설정의 지역 및 시간 형식 설정에 민감 가능성이 높습니다. 24 시간이 아닌 12 시간으로 구성되었으므로 "14:04:00"으로 날짜를 지정할 수 없습니다. 당신은 "02:04:00 PM"으로 그것을 만들 수 있습니다.

+0

아니요, staget으로서 xml 파일에 대한 참조가없는 별도의 스크립트에서 작동하기 전에 정적 텍스트로만 작동합니다. 나는 또한 24 시간 형식을 사용하고있다. – FrassesFik