Exemple #1
0
 /// <summary>
 /// 创建ISO8601TimeInterval对象
 /// </summary>
 /// <param name="start">开始时间</param>
 /// <param name="interval">时间段</param>
 /// <param name="end">结束时间</param>
 /// <param name="format">ISO8601TimeInterval格式</param>
 private ISO8601TimeInterval(DateTime start, TimeSpan interval, DateTime end, ISO8601TimeIntervalFormats format)
 {
     m_StartValue    = start;
     m_IntervalValue = interval;
     m_EndValue      = end;
     m_Format        = format;
 }
Exemple #2
0
        /// <summary>
        /// 生成由正则表达式解析的数据
        /// </summary>
        /// <param name="m">正则表达式解析类</param>
        /// <param name="format">ISO8601TimeInterval格式</param>
        /// <param name="start">所需要时间段的开始时间</param>
        /// <param name="end">所需要时间段的结束时间</param>
        /// <returns>时间段</returns>
        internal static TimeSpan Match2DateTime(Match m, ISO8601TimeIntervalFormats format, out DateTime start, out DateTime end)
        {
            TimeSpan interval = default(TimeSpan);

            switch (format)
            {
            case ISO8601TimeIntervalFormats.BasicDateByStartAndEndInSameYear:
            case ISO8601TimeIntervalFormats.ExtendedDateByStartAndEndInSameYear:
                start    = new DateTime(Convert.ToInt32(m.Groups["year"].Value), Convert.ToInt32(m.Groups["startmonth"].Value), Convert.ToInt32(m.Groups["startday"].Value));
                end      = new DateTime(Convert.ToInt32(m.Groups["year"].Value), Convert.ToInt32(m.Groups["endmonth"].Value), Convert.ToInt32(m.Groups["endday"].Value));
                interval = ISO8601TimeIntervalHelper.GetInterval(start, end);
                break;

            case ISO8601TimeIntervalFormats.BasicDateTimeByStartAndEnd:
            case ISO8601TimeIntervalFormats.ExtendedDateTimeByStartAndEnd:
                start = new DateTime
                        (
                    Convert.ToInt32(m.Groups["startyear"].Value),
                    Convert.ToInt32(m.Groups["startmonth"].Value),
                    Convert.ToInt32(m.Groups["startday"].Value),
                    Convert.ToInt32(m.Groups["starthour"].Value),
                    Convert.ToInt32(m.Groups["startminute"].Value),
                    Convert.ToInt32(m.Groups["startsecond"].Value)
                        );
                end = new DateTime
                      (
                    Convert.ToInt32(m.Groups["endyear"].Value),
                    Convert.ToInt32(m.Groups["endmonth"].Value),
                    Convert.ToInt32(m.Groups["endday"].Value),
                    Convert.ToInt32(m.Groups["endhour"].Value),
                    Convert.ToInt32(m.Groups["endminute"].Value),
                    Convert.ToInt32(m.Groups["endsecond"].Value)
                      );
                interval = ISO8601TimeIntervalHelper.GetInterval(start, end);
                break;

            case ISO8601TimeIntervalFormats.SymbolicDateTimeByDuration:
            case ISO8601TimeIntervalFormats.BasicDateTimeByDuration:
            case ISO8601TimeIntervalFormats.ExtendedDateTimeByDuration:
                interval = ISO8601TimeIntervalHelper.GetInterval
                           (
                    m.Groups["year"].Value,
                    m.Groups["month"].Value,
                    m.Groups["day"].Value,
                    m.Groups["hour"].Value,
                    m.Groups["minute"].Value,
                    m.Groups["second"].Value
                           );
                start = default(DateTime);
                end   = default(DateTime);
                break;

            case ISO8601TimeIntervalFormats.BasicDateTimeByStartAndDuration:
            case ISO8601TimeIntervalFormats.ExtendedDateTimeByStartAndDuration:
                start = new DateTime
                        (
                    Convert.ToInt32(m.Groups["startyear"].Value),
                    Convert.ToInt32(m.Groups["startmonth"].Value),
                    Convert.ToInt32(m.Groups["startday"].Value),
                    Convert.ToInt32(m.Groups["starthour"].Value),
                    Convert.ToInt32(m.Groups["startminute"].Value),
                    Convert.ToInt32(m.Groups["startsecond"].Value)
                        );
                interval = ISO8601TimeIntervalHelper.GetInterval
                           (
                    m.Groups["year"].Value,
                    m.Groups["month"].Value,
                    m.Groups["day"].Value,
                    m.Groups["hour"].Value,
                    m.Groups["minute"].Value,
                    m.Groups["second"].Value
                           );
                end = ISO8601TimeIntervalHelper.GetEndDate(start, interval);
                break;

            case ISO8601TimeIntervalFormats.BasicDateTimeByDurationAndEnd:
            case ISO8601TimeIntervalFormats.ExtendedDateTimeByDurationAndEnd:
                interval = ISO8601TimeIntervalHelper.GetInterval
                           (
                    m.Groups["year"].Value,
                    m.Groups["month"].Value,
                    m.Groups["day"].Value,
                    m.Groups["hour"].Value,
                    m.Groups["minute"].Value,
                    m.Groups["second"].Value
                           );
                end = new DateTime
                      (
                    Convert.ToInt32(m.Groups["endyear"].Value),
                    Convert.ToInt32(m.Groups["endmonth"].Value),
                    Convert.ToInt32(m.Groups["endday"].Value),
                    Convert.ToInt32(m.Groups["endhour"].Value),
                    Convert.ToInt32(m.Groups["endminute"].Value),
                    Convert.ToInt32(m.Groups["endsecond"].Value)
                      );
                start = ISO8601TimeIntervalHelper.GetStartDate(interval, end);
                break;

            case ISO8601TimeIntervalFormats.ExtendedDateByDuration:
                interval = ISO8601TimeIntervalHelper.GetInterval
                           (
                    m.Groups["year"].Value,
                    m.Groups["month"].Value,
                    m.Groups["day"].Value
                           );
                start = default(DateTime);
                end   = default(DateTime);
                break;

            case ISO8601TimeIntervalFormats.SymbolicHourByDuration:
                interval = ISO8601TimeIntervalHelper.GetNewInterval
                           (
                    m.Groups["hour"].Value,
                    m.Groups["minute"].Value,
                    m.Groups["second"].Value
                           );
                start = default(DateTime);
                end   = default(DateTime);
                break;

            default:
                start = default(DateTime);
                end   = default(DateTime);
                break;
            }

            return(interval);
        }
Exemple #3
0
 /// <summary>
 /// 创建ISO8601TimeInterval对象
 /// </summary>
 /// <param name="start">开始时间</param>
 /// <param name="interval">时间段</param>
 /// <param name="format">ISO8601TimeInterval格式</param>
 public ISO8601TimeInterval(DateTime start, TimeSpan interval, ISO8601TimeIntervalFormats format)
     : this(start, interval, start.Subtract(-interval), format)
 {
 }
Exemple #4
0
 /// <summary>
 /// 创建ISO8601TimeInterval对象
 /// </summary>
 /// <param name="start">开始时间</param>
 /// <param name="end">结束时间</param>
 /// <param name="format">ISO8601TimeInterval格式</param>
 public ISO8601TimeInterval(DateTime start, DateTime end, ISO8601TimeIntervalFormats format)
     : this(start, end.Subtract(start), end, format)
 {
 }
Exemple #5
0
 /// <summary>
 /// 创建ISO8601TimeInterval对象
 /// </summary>
 /// <param name="interval">时间段</param>
 /// <param name="end">结束时间</param>
 /// <param name="format">ISO8601TimeInterval格式</param>
 public ISO8601TimeInterval(TimeSpan interval, DateTime end, ISO8601TimeIntervalFormats format)
     : this(end.Subtract(interval), interval, end, format)
 {
 }
Exemple #6
0
 /// <summary>
 /// 创建ISO8601TimeInterval对象
 /// </summary>
 /// <param name="interval">时间段</param>
 /// <param name="format">ISO8601TimeInterval格式</param>
 public ISO8601TimeInterval(TimeSpan interval, ISO8601TimeIntervalFormats format)
     : this(DateTime.MinValue, interval, format)
 {
 }