Ejemplo n.º 1
0
        internal static WeekDate ToWeekDate(CalendarDate calendarDate, WeekDatePrecision precision)
        {
            if (calendarDate.Precision != CalendarDatePrecision.Day)
            {
                throw new ConversionException("The calendar date must be defined to the day to be converted to an week date.");
            }

            long year = calendarDate.Year;
            int week = ISO8601Calculator.WeekOfYear(calendarDate);
            var isLastWeekOfPreviousYear = week < 1;
            var isFirstWeekOfNextYear = week > ISO8601Calculator.WeeksInYear(year);

            if (isLastWeekOfPreviousYear)
            {
                year--;
                week = ISO8601Calculator.WeeksInYear(year);
            }
            else if (isFirstWeekOfNextYear)
            {
                year++;
                week = 1;
            }

            if (precision == WeekDatePrecision.Week)
            {
                return new WeekDate(year, week);
            }

            var day = (int)ISO8601Calculator.DayOfWeek(calendarDate);

            return new WeekDate(year, week, day);
        }
Ejemplo n.º 2
0
        public WeekDate(long year, int week, int day)
            : this(year, week)
        {
            if (day < 1 || day > 7)
            {
                throw new ArgumentOutOfRangeException("day", "The day must be a value from 1 to 7.");
            }

            _day = day;
            _precision = WeekDatePrecision.Day;
        }
Ejemplo n.º 3
0
        public WeekDate(long year, int week)
        {
            int weeksInYear = ISO8601Calculator.WeeksInYear(year);

            if (week < 1 || week > weeksInYear)
            {
                throw new ArgumentOutOfRangeException("week", string.Format("The week must be a value from 1 to {0}.", weeksInYear));
            }

            _year = year;
            _week = week;
            _precision = WeekDatePrecision.Week;
        }
Ejemplo n.º 4
0
 internal static WeekDate ToWeekDate(OrdinalDate ordinalDate, WeekDatePrecision precision)
 {
     return ordinalDate.ToCalendarDate(CalendarDatePrecision.Day).ToWeekDate(precision);
 }
Ejemplo n.º 5
0
 public WeekDate ToWeekDate(WeekDatePrecision precision)
 {
     return CalendarDateConverter.ToWeekDate(this, precision);
 }
Ejemplo n.º 6
0
 public WeekDate ToWeekDate(WeekDatePrecision precision)
 {
     return OrdinalDateConverter.ToWeekDate(this, precision);
 }