internal static string Serialize(OrdinalDateDuration ordinalDateDuration, ISO8601Options options)
        {
            if (options == null)
            {
                options = ISO8601Options.Default;
            }

            var output = new StringBuilder("P");

            if (options.IsExpanded)
            {
                if (ordinalDateDuration.Years >= 0)
                {
                    output.Append('+');
                }
            }

            output.Append(ordinalDateDuration.Years.ToString("D" + options.YearLength));

            if (options.UseComponentSeparators)
            {
                output.Append('-');
            }

            output.AppendFormat("{0:D3}", ordinalDateDuration.Days);

            return output.ToString();
        }
        internal static CalendarDateDuration ToCalendarDateDuration(OrdinalDateDuration duration)
        {
            int days;

            return new CalendarDateDuration(duration.Years, Math.DivRem(duration.Days, 30, out days), days);
        }