Applescript,日期时间

时间:2017-01-31 21:14:09

标签: xml date time applescript

请原谅我,如果下面的内容有点乱,我在这里的第一篇文章也是我第一次尝试解释我遇到的这样的问题。

我有一个脚本,它将从curl的XML数据转换为运输公司的开放API。它解析数据并将名为“Line”的所有XML元素放在一个数组中。然后重复遍历每个元素,并创建包含来自这些XML元素的数据的变量。

现在,其中一个XML元素包含dateTtime格式的出发时间值,如“2017-01-31T14:04:00”。我把这个值放在一个变量中然后我想把时间和日期分开。所以我使用AppleScript的文本项分隔符并将其设置为“T”,然后创建一个我设置为前一个“文本项目2”的变量。工作正常,我将时间数据存储在变量中。

现在我想在该变量上使用Applescripts“date of date”,以便以秒为单位获得时间。在这里打破,我收到一条错误消息,指出“系统事件出错:无法更改日期时间”14:04:00“XML文件”Macintosh HD:用户:John:桌面:my_xml_file.xml“键入字符串”

以下是代码:

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

如果我在测试脚本中将此代码修改为以下内容:

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)

然后我得到一个对话框,显示正确的秒数,没有错误信息。

我无法弄清楚我做错了什么= /

2 个答案:

答案 0 :(得分:0)

系统事件无法处理您想要的时间概念。告诉“我”,就像这样:

accordion-title

答案 1 :(得分:0)

问题很可能是从字符串构造日期对“系统偏好设置”中的区域和时间格式设置很敏感。我猜你有12小时的时间配置而不是24,所以你不能用“14:04:00”来约会。你可以用“02:04:00 PM”制作它。