Class Calendar

Calendar class

表示项目中使用的日历。

public class Calendar

特性

姓名描述
BaseCalendar { get; set; }获取或设置此日历所依赖的基准日历。 仅在日历不是基准日历时适用。
Exceptions { get; }获取 CalendarExceptionCollection 对象。 与日历关联的异常集合。
IsBaseCalendar { get; }获取日历是否为基准日历的值。
IsBaselineCalendar { get; set; }获取或设置一个值,指示日历是否为基准日历。
Name { get; set; }获取或设置日历的名称。
Uid { get; set; }获取或设置日历的唯一标识符。
WeekDays { get; }获取此日历的 WeekDaysCollection。 定义日历的工作日集合。
WorkWeeks { get; }获取 WorkWeekCollections 对象。 与日历关联的工作周集合。

方法

姓名描述
static Make24HourCalendar(Calendar)使给定的日历成为 24 小时制日历。 24 小时制日历是一个日历,其中一周中的每一天都在全天候工作。
static MakeNightShiftCalendar(Calendar)将给定的日历设为夜班日历。
static MakeStandardCalendar(Calendar)创建默认标准日历。
Delete()从项目中删除日历。
override Equals(object)返回一个值,指示此实例是否等于指定对象。
GetFinishDateByStartAndWork(DateTime, Duration)根据日历计算指定的工作时间将过去的日期。
GetFinishDateByStartAndWork(DateTime, TimeSpan)根据日历计算指定的工作时间将过去的日期。
override GetHashCode()返回类实例的哈希码。
GetNextWorkingDayStart(DateTime)计算从日期开始的下一个工作日。
GetPreviousWorkingDayEnd(DateTime)计算从指定日期开始的上一个工作日期。
GetStartDateFromFinishAndDuration(DateTime, Duration)根据指定的 FinishDate 和 Duration 返回 StartDate。
GetStartDateFromFinishAndDuration(DateTime, TimeSpan)根据指定的 FinishDate 和 Duration 返回 StartDate。
GetTaskFinishDateFromDuration(Task, TimeSpan)从开始日期、拆分部分和持续时间计算任务完成日期和时间。
GetWorkingHours(DateTime)返回日期的工作小时数。
GetWorkingHours(DateTime, DateTime)返回指定日期的工作时间。
GetWorkingTimes(DateTime)返回WorkingTimeCollection指定日期的工作时间.
IsDayWorking(DateTime)判断当天是否为工作日。

评论

日历用于定义标准工作时间和非工作时间。 项目必须有一个基准日历。任务和资源可以有 它们自己的基于基准日历的非基准日历。

例子

如何从头开始创建简单的日历。

[C#]
// 创建空日历
Calendar calendar = new Calendar("New calendar");
// 添加默认工作日(从 9:00 到 17:00 的 8 个工作时间)
calendar.Days.Add(WeekDay.CreateDefaultWorkingDay(DayType.Monday));
calendar.Days.Add(WeekDay.CreateDefaultWorkingDay(DayType.Tuesday));
calendar.Days.Add(WeekDay.CreateDefaultWorkingDay(DayType.Wednesday));
// 创建新的工作日
WeekDay myWeekDay = new WeekDay(DayType.Thursday);
// 设置工作时间。只有 DateTime 的时间部分很重要
    WorkingTime wt1 = new WorkingTime();
    wt1.FromTime = new DateTime(1, 1, 1, 6, 0, 0, 0);
    wt1.ToTime = new DateTime(1, 1, 1, 12, 0, 0, 0);
    WorkingTime wt2 = new WorkingTime();
    wt2.FromTime = new DateTime(1, 1, 1, 14, 0, 0, 0);
    wt2.ToTime = new DateTime(1, 1, 1, 18, 0, 0, 0);
    myWeekDay.WorkingTimes.Add(wt1);
    myWeekDay.WorkingTimes.Add(wt2);
    myWeekDay.DayWorking = true;
calendar.Days.Add(myWeekDay);
calendar.Days.Add(WeekDay.CreateDefaultWorkingDay(DayType.Friday));
// 添加周末
calendar.Days.Add(new WeekDay(DayType.Saturday));
calendar.Days.Add(new WeekDay(DayType.Sunday));
[VB]
'创建空日历
Dim calendar As Calendar =  New Calendar("New calendar")
'添加默认工作日(从 9:00  17:00  8 个工作时间)
calendar.Days.Add(WeekDay.CreateDefaultWorkingDay(DayType.Monday))
calendar.Days.Add(WeekDay.CreateDefaultWorkingDay(DayType.Tuesday))
calendar.Days.Add(WeekDay.CreateDefaultWorkingDay(DayType.Wednesday))
'创造新的新工作日
Dim myWeekDay As WeekDay =  New WeekDay(DayType.Thursday)
'设置工作时间。只有 DateTime 的时间部分很重要
    Dim wt1 As WorkingTime =  New WorkingTime()
    wt1.FromTime = New DateTime(1, 1, 1, 6, 0, 0, 0)
    wt1.ToTime = New DateTime(1, 1, 1, 12, 0, 0, 0)
    Dim wt2 As WorkingTime =  New WorkingTime()
    wt2.FromTime = New DateTime(1, 1, 1, 14, 0, 0, 0)
    wt2.ToTime = New DateTime(1, 1, 1, 18, 0, 0, 0)
    myWeekDay.WorkingTimes.Add(wt1)
    myWeekDay.WorkingTimes.Add(wt2)
    myWeekDay.DayWorking = True
calendar.Days.Add(myWeekDay)
calendar.Days.Add(WeekDay.CreateDefaultWorkingDay(DayType.Friday))
'添加周末
calendar.Days.Add(New WeekDay(DayType.Saturday))
calendar.Days.Add(New WeekDay(DayType.Sunday))

也可以看看