我正在尝试使用python解析从ms project 2013导出的xml文件,该文件包含以下数据:

<TimephasedData>
    <Type>1</Type>
    <UID>4628</UID>
    <Start>2014-09-22T08:00:00</Start>
    <Finish>2015-09-22T08:00:00</Finish>
    <Unit>8</Unit>
    <Value>PT2920H0M0S</Value>
</TimephasedData>
<TimephasedData>
    <Type>1</Type>
    <UID>4628</UID>
    <Start>2015-09-22T08:00:00</Start>
    <Finish>2015-09-23T08:00:00</Finish>
    <Unit>2</Unit>
    <Value>PT8H0M0S</Value>
</TimephasedData>

我不明白的是pt8hm0s和pt2920h0m0s代表什么(TimephasedData)。目前我通过替换字符“t”来解析日期,然后使用strptime

最佳答案

这是一个ISO 8601时间持续值。比较使用此符号的iCal duration data type规范:
形式定义
值类型由以下符号定义:

dur-value  = (["+"] / "-") "P" (dur-date / dur-time / dur-week)
dur-date   = dur-day [dur-time]
dur-time   = "T" (dur-hour / dur-minute / dur-second)
dur-week   = 1*DIGIT "W"
dur-hour   = 1*DIGIT "H" [dur-minute]
dur-minute = 1*DIGIT "M" [dur-second]
dur-second = 1*DIGIT "S"
dur-day    = 1*DIGIT "D"

所以PT8H0M0S是持续时间(T)、8小时(8H)、0分钟(0M)、0秒(0S)。(当然,P代表“period”)。
至少有一个python包可以处理转换这些类型的值,例如https://pypi.python.org/pypi/isodate

09-04 03:47
查看更多