Calendar – дата и время
<< Click to Display Table of Contents >> Объектная модель > Основные механизмы Calendar – дата и время |
Для работы с датами используются:
•класс Calendar, который позволяет получить текущий год, дату, время и т.д.;
•методы объекта System.DateTime.
Особенности:
•запрещается получать текущее время через класс DateTime. Вместо DateTime.Today используйте Calendar.Today, а вместо DateTime.Now – Calendar.Now. Подробнее см. раздел «Разрешенные классы»;
•чтобы получить текущее время в часовом поясе веб-сервера, вместо SQL-функций getdate() и current_timestamp используйте метод Sungero.Core.SQL.AddCurrentDateParameter(), в котором явно передайте дату и время параметр CurrentDate со значением текущих даты и времени.
Даты и время в методах и свойствах класса Calendar рассчитываются с учетом календарей рабочего времени, частных календарей и часовых поясов. Календари содержат сведения о рабочем времени, выходных и праздничных днях в определенном году для компании или конкретного сотрудника. Например, в соответствии с календарями рабочего времени вычисляются сроки заданий.
Если для сотрудника задано несколько календарей рабочего времени, то учитывается приоритет календаря. Наибольший приоритет имеет частный календарь рабочего времени сотрудника и заданный часовой пояс, далее – частный календарь рабочего времени подразделения и заданный часовой пояс, далее – календарь рабочего времени компании в целом. Подробнее см. раздел «Календари рабочего времени».
Методы
Имя |
Описание |
---|---|
AddWorkingDays() |
Добавить рабочие дни |
AddWorkingHours() |
Добавить рабочие часы |
Получить начало дня |
|
Получить начало месяца |
|
Получить начало недели |
|
BeginningOfWorkingDay() |
Получить начало рабочего дня |
BeginningOfWorkingMonth() |
Получить начало первого рабочего дня в месяце |
BeginningOfWorkingYear() |
Получить начало первого рабочего дня в году |
Получить начало года |
|
Проверить, находится ли дата в указанном периоде |
|
CalculateDeadline() |
Получить срок завершения задания |
Получить конец дня |
|
Получить конец месяца |
|
Получить конец недели |
|
EndOfWorkingDay() |
Получить конец рабочего дня |
EndOfWorkingMonth() |
Получить конец последнего рабочего дня в месяце |
EndOfWorkingYear() |
Получить конец последнего рабочего дня в году |
Получить конец года |
|
FromUserTime() |
Преобразовать дату и время |
FromUtcTime() |
Преобразовать дату и время из UTC |
Получить дату |
|
Получить локальные дату и время для указанного сотрудника, подразделения или нашей организации |
|
Получить локальную дату для указанного сотрудника, подразделения или нашей организации |
|
Проверить, указана ли дата со временем |
|
Проверить, выпадают ли дата и время на обеденный перерыв |
|
IsWorkingDay() |
Проверить, является ли день рабочим по календарю рабочего времени |
IsWorkingTime() |
Проверить, являются ли дата и время рабочими по календарю рабочего времени |
Получить начало следующего дня |
|
Получить начало следующего месяца |
|
Получить начало следующей недели |
|
NextWorkingDay() |
Получить дату следующего рабочего дня |
Получить начало следующего года |
|
Получить начало предыдущего дня |
|
Получить начало предыдущего месяца |
|
Получить начало предыдущей недели |
|
PreviousWorkingDay() |
Получить дату предыдущего рабочего дня |
Получить начало предыдущего года |
|
ToUserTime() |
Преобразовать дату и время текущего пользователя |
ToUtcTime() |
Преобразовать дату и время веб-сервера в формат UTC |
Свойства
Имя |
Тип |
Описание |
---|---|---|
DateTime |
Текущие дата и время веб-сервера |
|
Today |
DateTime |
Текущая дата веб-сервера |
UserNow |
DateTime |
Локальные даты и время текущего пользователя |
UserToday |
DateTime |
Локальная дата пользователя |
UtcOffset |
TimeSpan |
Смещение даты и времени веб-сервера от UTC |
Примечание. Для фильтрации по датам, когда нужно задать неограниченные периоды, используются Calendar.SqlMinValue – минимальное значение даты, поддерживаемое SQL-сервером, а также Calendar.SqlMaxValue – максимальное значение даты, поддерживаемое SQL-сервером.
Пример 1. Получение следующего\предыдущего рабочего дня
// Свойство Today – текущая дата веб-сервера.
var newDate = Calendar.Today.NextWorkingDay();
var newDate = Calendar.Today.PreviousWorkingDay();
Пример 2. Добавление времени к дате
// К текущей дате добавить дни/часы и округлить до ближайшей рабочей даты.
var newDate = Calendar.Today.AddWorkingDays(7);
var newDate = Calendar.Now.AddWorkingHours(5);
Пример 3. Проверка того, что текущие дата и время являются рабочим временем
// Свойство Now – текущие дата и время веб-сервера.
var now = Calendar.Now;
if (now.IsWorkingTime())
return true;
Пример 4. Проверка того, что для текущего пользователя день является рабочим
var isWorkingDay = Calendar.Now.IsWorkingDay(Employees.Current)
Данный вариант учитывает частные календари рабочего времени. У других методов класса Calendar, например, у AddWorkingDays(), EndOfWorkingDay(), также существуют перегрузки, позволяющие получить значение с учетом частных календарей указанных пользователей или групп пользователей.
© Компания Directum, 2024 |