ISO8601形式の継続時間文字列をTimeSpanに変換
- public class ExchangeUtil : PublicWebApiUtil {
- ///
/// ISO8601形式の文字列をTimeSpanに変換します。 /// - /// ISO8601形式の文字列
- ///
- public static TimeSpan Iso8601ToTimeSpan(string iso8601) {
- if (iso8601 == null || iso8601 == "") {
- //0秒で返す。
- return new TimeSpan(0, 0, 0);
- }
- TimeSpan? ret = null;
- int index = iso8601.IndexOf("D");
- if (index > 0) {
- //日付部("P1D")が存在する場合
- string strDays = iso8601.Substring(0, index);
- TimeSpan days = new TimeSpan(int.Parse(strDays.Replace("P", "")), 0, 0, 0);
- ret = days;
- //時間部が存在する場合
- index = iso8601.IndexOf("DT");
- if (index > 0) {
- TimeSpan other = XmlConvert.ToTimeSpan("PT" + iso8601.Substring(index + 2));
- ret = days.Add(other);
- }
- } else {
- ret = XmlConvert.ToTimeSpan(iso8601.Replace("P", "PT"));
- }
- return new TimeSpan(ret.Value.Days, ret.Value.Hours, ret.Value.Minutes, 0);
- }
- }
0 件のコメント:
コメントを投稿