Перейти к содержанию

Дата и время: различия между версиями

Материал из Химсофт Вики
Нет описания правки
 
(не показаны 24 промежуточные версии этого же участника)
Строка 1: Строка 1:
==Функции по работе с датой и временем==
==Установка конкретной даты==
Для установки конкретной даты можно использовать:
*конструкторы структуры <code>DateTime</code>;
:<syntaxhighlight lang="csharp">
new DateTime(год, месяц, день, часы, минуты, секунды);
</syntaxhighlight>
*функцию <code>ToDateTime</code> (подробнее в разделе [[Конвертирование]]);
*функцию <code>DateSerial</code> (рассматривается ниже).


==Информация о времени==
*при использовании функций для преобразования даты из данного раздела по умолчанию сохраняется и информация о времени;
*для удаления времени из даты можно воспользоваться функциями <code>Format</code> или <code>FormatDateTime</code> (более подробная информация об этих функциях представлена в разделе [[Форматирование]]).


<div style="background-color: #e7f3ff; border-left: 5px solid #2196f3; padding: 15px; margin: 10px 0;">
'''Примечание'''


В качестве примера использования поля из базы данных в функциях будет использоваться условное поле <code>[Employees.BirthDate]</code>:
<syntaxhighlight lang="text">
[Employees.BirthDate] = 27.01.1986
</syntaxhighlight>
</div>


==Стандартные шаблоны форматирования даты и времени==
== AddDays ==
{|class="wikitable" style="margin:auto; background-color: #fff;"  
{|class="wikitable" style="background-color: #fff;"  
|-
|-
!Шаблон
! Функция !! Параметры !! Возвращаемое значение
!Описание
!Пример
|-
|-
|"d"
 
|Короткая дата
| <code>AddDays</code> || <code>DateTime date, double value</code> || <code>DateTime</code>
|17.10.2025<br>10/17/2025
|}
 
Добавляет к дате <code>date</code> количество дней <code>value</code> и возвращает новую дату.
 
'''Пример:'''
<syntaxhighlight lang="csharp">
AddDays(new DateTime(2024,4,2), 2) = 04.04.2024 0:00:00
AddDays(ToDateTime("2.4.2024"), 2) = 04.04.2024 0:00:00
AddDays([Employees.BirthDate], 2) = 29.01.1986 0:00:00
</syntaxhighlight>
 
== AddHours ==
{|class="wikitable" style="background-color: #fff;"
|-
|-
|"D"
! Функция !! Параметры !! Возвращаемое значение
|Длинная дата
|пятница, 17 октября 2025 г.<br>Friday, October 17, 2025
|-
|-
|"f"
 
|Полный формат (дата и короткое время)
| <code>AddHours</code> || <code>DateTime date, double value</code> || <code>DateTime</code>
|пятница, 17 октября 2025 г. 00:00<br>Friday, October 17, 2025 12:00 AM
|}
 
Добавляет к дате <code>date</code> количество часов <code>value</code> и возвращает новую дату.
 
'''Пример:'''
<syntaxhighlight lang="csharp">
AddHours(new DateTime(2024,4,2,5,30,5), 1) = 02.04.2024 6:30:05
AddHours(ToDateTime("2.4.2024 5:30:05"), 1) = 02.04.2024 6:30:05
AddHours([Employees.BirthDate], 1) = 27.01.1986 1:00:00
</syntaxhighlight>
 
== AddMinutes ==
{|class="wikitable" style="background-color: #fff;"
|-
|-
|"F"
! Функция !! Параметры !! Возвращаемое значение
|Полный формат (дата и длинное время)
|пятница, 17 октября 2025 г. 00:00:00<br>Friday, October 17, 2025 12:00:00 AM
|-
|-
|"g"
 
|Общий формат (дата и короткое время)
| <code>AddMinutes</code> || <code>DateTime date, double value</code> || <code>DateTime</code>
|17.10.2025 00:00<br>10/17/2025 12:00 AM
|}
 
Добавляет к дате <code>date</code> количество минут <code>value</code> и возвращает новую дату.
 
'''Пример:'''
<syntaxhighlight lang="csharp">
AddMinutes(new DateTime(2024,4,2,5,30,5), 10) = 02.04.2024 5:40:05
AddMinutes(ToDateTime("2.4.2024 5:30:05"), 10) = 02.04.2024 5:40:05
AddMinutes([Employees.BirthDate], 10) = 27.01.1986 0:10:00
</syntaxhighlight>
 
== AddMonths ==
{|class="wikitable" style="background-color: #fff;"
|-
! Функция !! Параметры !! Возвращаемое значение
|-
|-
|"G"
 
|Общий формат (дата и длинное время)
| <code>AddMonths</code> || <code>DateTime date, int value</code> || <code>DateTime</code>
|17.10.2025 00:00:00<br>10/17/2025 12:00:00 AM
|}
 
Добавляет к дате <code>date</code> количество месяцев <code>value</code> и возвращает новую дату.
 
'''Пример:'''
<syntaxhighlight lang="csharp">
AddMonths(new DateTime(2024,4,2,5,30,5), 2) = 02.06.2024 5:30:05
AddMonths(ToDateTime("2.4.2024 5:30:05"), 2) = 02.06.2024 5:30:05
AddMonths([Employees.BirthDate], 2) = 27.03.1986 0:00:00
</syntaxhighlight>
 
== AddSeconds ==
{|class="wikitable" style="background-color: #fff;"
|-
! Функция !! Параметры !! Возвращаемое значение
|-
 
| <code>AddSeconds</code> || <code>DateTime date, double value</code> || <code>DateTime</code>
|}
 
Добавляет к дате <code>date</code> количество секунд <code>value</code> и возвращает новую дату.
 
'''Пример:'''
<syntaxhighlight lang="csharp">
AddSeconds(new DateTime(2024,4,2,5,30,5), 10) = 02.04.2024 5:30:15
AddSeconds(ToDateTime("2.4.2024 5:30:05"), 10) = 02.04.2024 5:30:15
AddSeconds([Employees.BirthDate], 10) = 27.01.1986 0:00:10
</syntaxhighlight>
 
== AddYears ==
{|class="wikitable" style="background-color: #fff;"
|-
|-
|"M", "m"
! Функция !! Параметры !! Возвращаемое значение
|Месяц и день
|17 октября<br>October 17
|-
|-
|"O", "o"
 
|Дата и время в формате round-trip (ISO 8601)
| <code>AddYears</code> || <code>DateTime date, int value</code> || <code>DateTime</code>
|2025-10-17T00:00:00.0000000+07:00<br>2025-10-17T00:00:00.0000000+07:00
|}
 
Добавляет к дате <code>date</code> количество лет <code>value</code> и возвращает новую дату.
 
'''Пример:'''
<syntaxhighlight lang="csharp">
AddYears(new DateTime(2024,4,2,5,30,5), 3) = 02.04.2027 5:30:05
AddYears(ToDateTime("2.4.2024 5:30:05"), 3) = 02.04.2027 5:30:05
AddYears([Employees.BirthDate], 3) = 27.01.1989 0:00:00
</syntaxhighlight>
 
== DateDiff ==
{|class="wikitable" style="background-color: #fff;"
|-
|-
|"R", "r"
! Функция !! Параметры !! Возвращаемое значение
|Дата и время в формате RFC1123
|Fri, 17 Oct 2025 00:00:00 GMT<br>Fri, 17 Oct 2025 00:00:00 GMT
|-
|-
|"s"
 
|Сортируемые дата и время
| <code>DateDiff</code> || <code>DateTime date1, DateTime date2</code> || <code>TimeSpan</code>
|2025-10-17T00:00:00<br>2025-10-17T00:00:00
|}
 
Возвращает интервал — количество дней, часов, минут, секунд между двумя датами.
 
'''Пример:'''
<syntaxhighlight lang="csharp">
DateDiff(new DateTime(2024,4,2,5,0,0), new DateTime(2025,1,2,5,30,5)) = -275.00:30:05
DateDiff(ToDateTime("2.1.2025 5:30:05"), ToDateTime("2.4.2024 5:00:00")) = 275.00:30:05
DateDiff(ToDateTime("2.4.2024 5:00:00"), [Employees.BirthDate]) = 13945.05:00:00
</syntaxhighlight>
 
== DateSerial ==
{|class="wikitable" style="background-color: #fff;"
|-
|-
|"t"
! Функция !! Параметры !! Возвращаемое значение
|Короткое время
|00:00<br>12:00 AM
|-
|-
|"T"
 
|Длинное время
| <code>DateSerial</code> || <code>int year, int month, int day</code> || <code>DateTime</code>
|00:00:00<br>12:00:00 AM
|}
 
Создает новое значение <code>DateTime</code> из указанных года (<code>year</code>), месяца (<code>month</code>) и дня (<code>day</code>).
 
Еще один доступный способ для установки конкретной даты.
 
'''Пример:'''
<syntaxhighlight lang="csharp">
DateSerial(2024,4,2) = 02.04.2024 0:00:00
</syntaxhighlight>
 
== Day ==
{|class="wikitable" style="background-color: #fff;"
|-
|-
|"u"
! Функция !! Параметры !! Возвращаемое значение
|Универсальные сортируемые дата и время
|2025-10-17 00:00:00Z<br>2025-10-17 00:00:00Z
|-
|-
|"U"
 
|Универсальные полные дата и время
| <code>Day</code> || <code>DateTime date</code> || <code>int</code>
|четверг, 16 октября 2025 г. 17:00:00<br>Thursday, October 16, 2025 5:00:00 PM
|}
 
Извлекает день месяца (1-31) из указанной даты.
 
'''Пример:'''
<syntaxhighlight lang="csharp">
Day(new DateTime(2024,4,2)) = 2
Day(ToDateTime("2.4.2024")) = 2
Day([Employees.BirthDate]) = 27
</syntaxhighlight>
 
== DayOfWeek ==
{|class="wikitable" style="background-color: #fff;"
|-
|-
|"Y", "y"
! Функция !! Параметры !! Возвращаемое значение
|Год и месяц
|октябрь 2025 г.<br>October 2025
|-
|-
| <code>DayOfWeek</code> || <code>DateTime date</code> || <code>string</code>
|}
|}


==Примеры использования==
Возвращает название дня недели (понедельник..воскресенье) указанной даты.
Выражение <code>=Format(Fields!input.Value, <Шаблон форматирования>)</code> форматирует значение даты из поля <code>Fields!input.Value</code> по вышеуказанным правилам форматирования (указываются в кавычках вместо <code>Шаблон форматирования</code>):
 
*<code>«dddd, d MMMM, yyyy»</code> = четверг, 18 декабрь, 2025
'''Пример:'''
*<code>«dd.MM.yyyy»</code> = 18.12.2025
<syntaxhighlight lang="csharp">
*<code>«d»</code> или <code>«dd»</code> = день месяца в числовом формате (например, «18»)
DayOfWeek(new DateTime(2024,4,2)) = "вторник"
*<code>«ddd»</code> = день недели в коротком строковом формате (например, «чт» для четверга)
DayOfWeek(ToDateTime("2.4.2024")) = "вторник"
*<code>«dddd»</code> = день недели в полном строковом формате (например, «четверг»)
DayOfWeek([Employees.BirthDate]) = "понедельник"
*<code>«MM»</code> = месяц в числовом формате (например, «12»)
</syntaxhighlight>
*<code>«MMM»</code> = месяц в коротком строковом формате (например, «дек.»)
 
*<code>«MMMM»</code> = месяц в коротком строковом формате (например, «декабрь»)
== DayOfYear ==
*<code>«y»</code> или <code>«yy»</code> = год в двузначном формате (например, «25» для 2025)
{|class="wikitable" style="background-color: #fff;"
*<code>«yyyy»</code> = год в четырехзначном формате (например, «2025»)
|-
*<code>«hh:mm»</code> = время в 12-часовом формате (например, «01:00» для 13:00)
! Функция !! Параметры !! Возвращаемое значение
*<code>«HH:mm»</code> = время в 24-часовом формате (например, «13:00» для 13:00)
|-
*<code>«hh»</code> = часы в 12-часовом формате
 
*<code>«HH»</code> = часы в 24-часовом формате
| <code>DayOfYear</code> || <code>DateTime date</code> || <code>int</code>
*<code>«mm»</code> = минуты
|}
*<code>«ss»</code> = секунды
 
Возвращает порядковый номер дня в году (1-365) в указанной дате.
 
'''Пример:'''
<syntaxhighlight lang="csharp">
DayOfYear(new DateTime(2024,4,2)) = 93
DayOfYear(ToDateTime("2.4.2024")) = 93
DayOfYear([Employees.BirthDate]) = 27
</syntaxhighlight>
 
== DaysInMonth ==
{|class="wikitable" style="background-color: #fff;"
|-
! Функция !! Параметры !! Возвращаемое значение
|-
 
| <code>DaysInMonth</code> || <code>int year, int month</code> || <code>int</code>
|}
 
Возвращает количество дней в месяце month указанного года year.
 
'''Пример:'''
<syntaxhighlight lang="csharp">
DaysInMonth(2024, 4) = 30
</syntaxhighlight>
 
== Hour ==
{|class="wikitable" style="background-color: #fff;"
|-
! Функция !! Параметры !! Возвращаемое значение
|-
 
| <code>Hour</code> || <code>DateTime date</code> || <code>int</code>
|}
 
Извлекает час (0-23) из указанной даты.
 
'''Пример:'''
<syntaxhighlight lang="csharp">
Hour(new DateTime(2024,4,2,5,30,5)) = 5
Hour(ToDateTime("2.4.2024 5:30:05")) = 5
Hour([Employees.BirthDate]) = 0
</syntaxhighlight>
 
== Minute ==
{|class="wikitable" style="background-color: #fff;"
|-
! Функция !! Параметры !! Возвращаемое значение
|-
 
| <code>Minute</code> || <code>DateTime date</code> || <code>int</code>
|}
 
Извлекает минуты (0-59) из указанной даты.
 
'''Пример:'''
<syntaxhighlight lang="csharp">
Minute(new DateTime(2024,4,2,5,30,5)) = 30
Minute(ToDateTime("2.4.2024 5:30:05")) = 30
Minute([Employees.BirthDate]) = 0
</syntaxhighlight>
 
== Month ==
{|class="wikitable" style="background-color: #fff;"
|-
! Функция !! Параметры !! Возвращаемое значение
|-
 
| <code>Month</code> || <code>DateTime date</code> || <code>int</code>
|}
 
Извлекает месяц (1-12) из указанной даты.
 
'''Пример:'''
<syntaxhighlight lang="csharp">
Month(new DateTime(2024,4,2)) = 4
Month(ToDateTime("2.4.2024")) = 4
Month([Employees.BirthDate]) = 1
</syntaxhighlight>
 
== MonthName ==
{|class="wikitable" style="background-color: #fff;"
|-
! Функция !! Параметры !! Возвращаемое значение
|-
 
| <code>MonthName</code> || <code>int month</code> || <code>string</code>
|}
 
Возвращает локализованное название месяца (Январь..Декабрь) с номером <code>month</code>.
 
'''Пример:'''
<syntaxhighlight lang="csharp">
MonthName(1) = "Январь"
</syntaxhighlight>
 
== Second ==
{|class="wikitable" style="background-color: #fff;"
|-
! Функция !! Параметры !! Возвращаемое значение
|-
 
| <code>Second</code> || <code>DateTime date</code> || <code>int</code>
|}
 
Извлекает секунды (0-59) из указанной даты.
 
'''Пример:'''
<syntaxhighlight lang="csharp">
Second(new DateTime(2024,4,2,5,30,5)) = 5
Second(ToDateTime("2.4.2024 5:30:05")) = 5
Second([Employees.BirthDate]) = 0
</syntaxhighlight>
 
== Year ==
{|class="wikitable" style="background-color: #fff;"
|-
! Функция !! Параметры !! Возвращаемое значение
|-
 
| <code>Year</code> || <code>DateTime date</code> || <code>int</code>
|}
 
Извлекает год из указанной даты.
 
'''Пример:'''
<syntaxhighlight lang="csharp">
Year(new DateTime(2024,4,2)) = 2024
Year(ToDateTime("2.4.2024")) = 2024
Year([Employees.BirthDate]) = 1986
</syntaxhighlight>

Текущая версия от 03:42, 19 октября 2026

Установка конкретной даты

Для установки конкретной даты можно использовать:

  • конструкторы структуры DateTime;
new DateTime(год, месяц, день, часы, минуты, секунды);
  • функцию ToDateTime (подробнее в разделе Конвертирование);
  • функцию DateSerial (рассматривается ниже).

Информация о времени

  • при использовании функций для преобразования даты из данного раздела по умолчанию сохраняется и информация о времени;
  • для удаления времени из даты можно воспользоваться функциями Format или FormatDateTime (более подробная информация об этих функциях представлена в разделе Форматирование).

Примечание

В качестве примера использования поля из базы данных в функциях будет использоваться условное поле [Employees.BirthDate]:

[Employees.BirthDate] = 27.01.1986

AddDays

Функция Параметры Возвращаемое значение
AddDays DateTime date, double value DateTime

Добавляет к дате date количество дней value и возвращает новую дату.

Пример:

AddDays(new DateTime(2024,4,2), 2) = 04.04.2024 0:00:00
AddDays(ToDateTime("2.4.2024"), 2) = 04.04.2024 0:00:00
AddDays([Employees.BirthDate], 2) = 29.01.1986 0:00:00

AddHours

Функция Параметры Возвращаемое значение
AddHours DateTime date, double value DateTime

Добавляет к дате date количество часов value и возвращает новую дату.

Пример:

AddHours(new DateTime(2024,4,2,5,30,5), 1) = 02.04.2024 6:30:05
AddHours(ToDateTime("2.4.2024 5:30:05"), 1) = 02.04.2024 6:30:05
AddHours([Employees.BirthDate], 1) = 27.01.1986 1:00:00

AddMinutes

Функция Параметры Возвращаемое значение
AddMinutes DateTime date, double value DateTime

Добавляет к дате date количество минут value и возвращает новую дату.

Пример:

AddMinutes(new DateTime(2024,4,2,5,30,5), 10) = 02.04.2024 5:40:05
AddMinutes(ToDateTime("2.4.2024 5:30:05"), 10) = 02.04.2024 5:40:05
AddMinutes([Employees.BirthDate], 10) = 27.01.1986 0:10:00

AddMonths

Функция Параметры Возвращаемое значение
AddMonths DateTime date, int value DateTime

Добавляет к дате date количество месяцев value и возвращает новую дату.

Пример:

AddMonths(new DateTime(2024,4,2,5,30,5), 2) = 02.06.2024 5:30:05
AddMonths(ToDateTime("2.4.2024 5:30:05"), 2) = 02.06.2024 5:30:05
AddMonths([Employees.BirthDate], 2) = 27.03.1986 0:00:00

AddSeconds

Функция Параметры Возвращаемое значение
AddSeconds DateTime date, double value DateTime

Добавляет к дате date количество секунд value и возвращает новую дату.

Пример:

AddSeconds(new DateTime(2024,4,2,5,30,5), 10) = 02.04.2024 5:30:15
AddSeconds(ToDateTime("2.4.2024 5:30:05"), 10) = 02.04.2024 5:30:15
AddSeconds([Employees.BirthDate], 10) = 27.01.1986 0:00:10

AddYears

Функция Параметры Возвращаемое значение
AddYears DateTime date, int value DateTime

Добавляет к дате date количество лет value и возвращает новую дату.

Пример:

AddYears(new DateTime(2024,4,2,5,30,5), 3) = 02.04.2027 5:30:05
AddYears(ToDateTime("2.4.2024 5:30:05"), 3) = 02.04.2027 5:30:05
AddYears([Employees.BirthDate], 3) = 27.01.1989 0:00:00

DateDiff

Функция Параметры Возвращаемое значение
DateDiff DateTime date1, DateTime date2 TimeSpan

Возвращает интервал — количество дней, часов, минут, секунд между двумя датами.

Пример:

DateDiff(new DateTime(2024,4,2,5,0,0), new DateTime(2025,1,2,5,30,5)) = -275.00:30:05
DateDiff(ToDateTime("2.1.2025 5:30:05"), ToDateTime("2.4.2024 5:00:00")) = 275.00:30:05
DateDiff(ToDateTime("2.4.2024 5:00:00"), [Employees.BirthDate]) = 13945.05:00:00

DateSerial

Функция Параметры Возвращаемое значение
DateSerial int year, int month, int day DateTime

Создает новое значение DateTime из указанных года (year), месяца (month) и дня (day).

Еще один доступный способ для установки конкретной даты.

Пример:

DateSerial(2024,4,2) = 02.04.2024 0:00:00

Day

Функция Параметры Возвращаемое значение
Day DateTime date int

Извлекает день месяца (1-31) из указанной даты.

Пример:

Day(new DateTime(2024,4,2)) = 2
Day(ToDateTime("2.4.2024")) = 2
Day([Employees.BirthDate]) = 27

DayOfWeek

Функция Параметры Возвращаемое значение
DayOfWeek DateTime date string

Возвращает название дня недели (понедельник..воскресенье) указанной даты.

Пример:

DayOfWeek(new DateTime(2024,4,2)) = "вторник"
DayOfWeek(ToDateTime("2.4.2024")) = "вторник"
DayOfWeek([Employees.BirthDate]) = "понедельник"

DayOfYear

Функция Параметры Возвращаемое значение
DayOfYear DateTime date int

Возвращает порядковый номер дня в году (1-365) в указанной дате.

Пример:

DayOfYear(new DateTime(2024,4,2)) = 93
DayOfYear(ToDateTime("2.4.2024")) = 93
DayOfYear([Employees.BirthDate]) = 27

DaysInMonth

Функция Параметры Возвращаемое значение
DaysInMonth int year, int month int

Возвращает количество дней в месяце month указанного года year.

Пример:

DaysInMonth(2024, 4) = 30

Hour

Функция Параметры Возвращаемое значение
Hour DateTime date int

Извлекает час (0-23) из указанной даты.

Пример:

Hour(new DateTime(2024,4,2,5,30,5)) = 5
Hour(ToDateTime("2.4.2024 5:30:05")) = 5
Hour([Employees.BirthDate]) = 0

Minute

Функция Параметры Возвращаемое значение
Minute DateTime date int

Извлекает минуты (0-59) из указанной даты.

Пример:

Minute(new DateTime(2024,4,2,5,30,5)) = 30
Minute(ToDateTime("2.4.2024 5:30:05")) = 30
Minute([Employees.BirthDate]) = 0

Month

Функция Параметры Возвращаемое значение
Month DateTime date int

Извлекает месяц (1-12) из указанной даты.

Пример:

Month(new DateTime(2024,4,2)) = 4
Month(ToDateTime("2.4.2024")) = 4
Month([Employees.BirthDate]) = 1

MonthName

Функция Параметры Возвращаемое значение
MonthName int month string

Возвращает локализованное название месяца (Январь..Декабрь) с номером month.

Пример:

MonthName(1) = "Январь"

Second

Функция Параметры Возвращаемое значение
Second DateTime date int

Извлекает секунды (0-59) из указанной даты.

Пример:

Second(new DateTime(2024,4,2,5,30,5)) = 5
Second(ToDateTime("2.4.2024 5:30:05")) = 5
Second([Employees.BirthDate]) = 0

Year

Функция Параметры Возвращаемое значение
Year DateTime date int

Извлекает год из указанной даты.

Пример:

Year(new DateTime(2024,4,2)) = 2024
Year(ToDateTime("2.4.2024")) = 2024
Year([Employees.BirthDate]) = 1986