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); }
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; }
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; }
internal static WeekDate ToWeekDate(OrdinalDate ordinalDate, WeekDatePrecision precision) { return ordinalDate.ToCalendarDate(CalendarDatePrecision.Day).ToWeekDate(precision); }
public WeekDate ToWeekDate(WeekDatePrecision precision) { return CalendarDateConverter.ToWeekDate(this, precision); }
public WeekDate ToWeekDate(WeekDatePrecision precision) { return OrdinalDateConverter.ToWeekDate(this, precision); }