我正在尝试使用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。