我尝试使用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>
我不明白的是PT8H0M0S和PT2920H0M0S代表什么(TimephasedData)。目前我通过替换字符&#34; T&#34;来解析日期。然后使用strptime
答案 0 :(得分:3)
这是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
代表&#34;期间&#34;当然)。
至少有一个Python包可以处理转换这些类型的值,例如https://pypi.python.org/pypi/isodate。