///<summary> /// This returns the xml representation of an xsd:duration object. ///</summary> ///<param name = "time"> the duration as a Time object </param> ///<returns> the xsd:duration formatted String </returns> public virtual string FormatXSDDurationTime(Time time) { var duration = new StringBuilder(); duration.Append("P"); if (time.Hours != 0 || time.Minutes != 0 || time.Seconds != 0 || time.Milliseconds != 0) { duration.Append("T"); if (time.Hours != 0) duration.Append(time.Hours + "H"); if (time.Minutes != 0) duration.Append(time.Minutes + "M"); if (time.Seconds != 0 || time.Milliseconds != 0) { duration.Append(time.Seconds + "." + time.Milliseconds.ToString(milliNF)); duration.Append("S"); } if (duration.Length == 1) // zero seconds duration.Append("T0S"); if (time.IsNegative) duration.Insert(0, "-"); } return duration.ToString(); }
///<summary> /// A method that formats <see cref = "Time" />objects. ///</summary> ///<param name = "time"> /// The time <c>Object</c> to be formatted. </param> ///<returns> String The formatted <c>String</c> </returns> public virtual string Format(Time time) { if (timeFormat == XSD_DURATION_FORMAT) { return FormatXSDDurationTime(time); } var sb = new StringBuilder(); sb.Append(time.Hours.ToString(hourNF)); sb.Append(":"); sb.Append(time.Minutes.ToString(minuteSecondNF)); if (useSeconds) { sb.Append(":"); sb.Append(time.Seconds.ToString(minuteSecondNF)); } if (useMillis) { sb.Append("."); sb.Append(time.Milliseconds.ToString(milliNF)); } return sb.ToString(); }