### 日期格式化

#### 1. :formatD(patternOut, patternIn)

##### Описание синтаксиса
Форматирует дату, принимает шаблон выходного формата `patternOut` и шаблон входного формата `patternIn` (по умолчанию ISO 8601).

##### Общие примеры
```
{d.createdAt:formatD(YYYY-MM-DD)}           // Вывод 2024-01-15
{d.createdAt:formatD(YYYY年M月D日)}          // Вывод 2024年1月15日
{d.updatedAt:formatD(YYYY年M月D日 HH:mm)}    // Вывод 2024年1月15日 14:30
{d.orderDate:formatD(YYYY/MM/DD HH:mm:ss)}  // Вывод 2024/01/15 14:30:25
{d.birthday:formatD(M月D日)}                 // Вывод 1月15日
{d.meetingTime:formatD(HH:mm)}              // Вывод 14:30
{d.deadline:formatD(YYYY年M月D日 dddd)}      // Вывод 2024年1月15日 星期一
```

##### Другие примеры форматов
```
'20160131':formatD(L)      // Вывод 01/31/2016
'20160131':formatD(LL)     // Вывод January 31, 2016
'20160131':formatD(LLLL)   // Вывод Sunday, January 31, 2016 12:00 AM
'20160131':formatD(dddd)   // Вывод Sunday
```

##### Результат
Вывод представляет собой строку даты в указанном формате.


#### 2. :addD(amount, unit, patternIn)

##### Описание синтаксиса
Добавляет к дате указанное количество времени. Поддерживаемые единицы: day, week, month, quarter, year, hour, minute, second, millisecond.  
Параметры:
- amount: добавляемое количество
- unit: единица времени (без учета регистра)
- patternIn: необязательно, входной формат, по умолчанию ISO8601

##### Пример
```
'2017-05-10T15:57:23.769561+03:00':addD('3', 'day')    // Вывод "2017-05-13T12:57:23.769Z"
'2017-05-10 15:57:23.769561+03:00':addD('3', 'month')      // Вывод "2017-08-10T12:57:23.769Z"
'20160131':addD('3', 'day')       // Вывод "2016-02-03T00:00:00.000Z"
'20160131':addD('3', 'month')     // Вывод "2016-04-30T00:00:00.000Z"
'31-2016-01':addD('3', 'month', 'DD-YYYY-MM')  // Вывод "2016-04-30T00:00:00.000Z"
```

##### Результат
Вывод представляет собой новую дату после добавления времени.


#### 3. :subD(amount, unit, patternIn)

##### Описание синтаксиса
Вычитает из даты указанное количество времени. Параметры такие же, как в `addD`.

##### Пример
```
'2017-05-10T15:57:23.769561+03:00':subD('3', 'day')    // Вывод "2017-05-07T12:57:23.769Z"
'2017-05-10 15:57:23.769561+03:00':subD('3', 'month')      // Вывод "2017-02-10T12:57:23.769Z"
'20160131':subD('3', 'day')       // Вывод "2016-01-28T00:00:00.000Z"
'20160131':subD('3', 'month')     // Вывод "2015-10-31T00:00:00.000Z"
'31-2016-01':subD('3', 'month', 'DD-YYYY-MM')  // Вывод "2015-10-31T00:00:00.000Z"
```

##### Результат
Вывод представляет собой новую дату после вычитания времени.


#### 4. :startOfD(unit, patternIn)

##### Описание синтаксиса
Устанавливает дату на начало указанной единицы времени.  
Параметры:
- unit: единица времени
- patternIn: необязательно, входной формат

##### Пример
```
'2017-05-10T15:57:23.769561+03:00':startOfD('day')    // Вывод "2017-05-10T00:00:00.000Z"
'2017-05-10 15:57:23.769561+03:00':startOfD('month')      // Вывод "2017-05-01T00:00:00.000Z"
'20160131':startOfD('day')       // Вывод "2016-01-31T00:00:00.000Z"
'20160131':startOfD('month')     // Вывод "2016-01-01T00:00:00.000Z"
'31-2016-01':startOfD('month', 'DD-YYYY-MM')  // Вывод "2016-01-01T00:00:00.000Z"
```

##### Результат
Вывод представляет собой строку даты начала периода.


#### 5. :endOfD(unit, patternIn)

##### Описание синтаксиса
Устанавливает дату на конец указанной единицы времени.  
Параметры такие же, как выше.

##### Пример
```
'2017-05-10T15:57:23.769561+03:00':endOfD('day')    // Вывод "2017-05-10T23:59:59.999Z"
'2017-05-10 15:57:23.769561+03:00':endOfD('month')      // Вывод "2017-05-31T23:59:59.999Z"
'20160131':endOfD('day')       // Вывод "2016-01-31T23:59:59.999Z"
'20160131':endOfD('month')     // Вывод "2016-01-31T23:59:59.999Z"
'31-2016-01':endOfD('month', 'DD-YYYY-MM')  // Вывод "2016-01-31T23:59:59.999Z"
```

##### Результат
Вывод представляет собой строку даты конца периода.


#### 6. :diffD(toDate, unit, patternFromDate, patternToDate)

##### Описание синтаксиса
Вычисляет разницу между двумя датами и выводит ее в указанных единицах. Поддерживаемые единицы вывода:
- `day(s)` или `d`
- `week(s)` или `w`
- `quarter(s)` или `Q`
- `month(s)` или `M`
- `year(s)` или `y`
- `hour(s)` или `h`
- `minute(s)` или `m`
- `second(s)` или `s`
- `millisecond(s)` или `ms` (единица по умолчанию)

Параметры:
- toDate: целевая дата
- unit: единица вывода
- patternFromDate: необязательно, формат начальной даты
- patternToDate: необязательно, формат целевой даты

##### Пример
```
'20101001':diffD('20101201')              // Вывод 5270400000
'20101001':diffD('20101201', 'second')      // Вывод 5270400
'20101001':diffD('20101201', 's')           // Вывод 5270400
'20101001':diffD('20101201', 'm')           // Вывод 87840
'20101001':diffD('20101201', 'h')           // Вывод 1464
'20101001':diffD('20101201', 'weeks')       // Вывод 8
'20101001':diffD('20101201', 'days')        // Вывод 61
'2010+10+01':diffD('2010=12=01', 'ms', 'YYYY+MM+DD', 'YYYY=MM=DD')  // Вывод 5270400000
```

##### Результат
Вывод представляет собой разницу во времени между двумя датами, преобразованную в соответствии с указанной единицей.


#### 7. :convDate(patternIn, patternOut)

##### Описание синтаксиса
Преобразует дату из одного формата в другой. (Не рекомендуется к использованию)  
Параметры:
- patternIn: входной формат даты
- patternOut: выходной формат даты

##### Пример
```
'20160131':convDate('YYYYMMDD', 'L')      // Вывод "01/31/2016"
'20160131':convDate('YYYYMMDD', 'LL')     // Вывод "January 31, 2016"
'20160131':convDate('YYYYMMDD', 'LLLL')   // Вывод "Sunday, January 31, 2016 12:00 AM"
'20160131':convDate('YYYYMMDD', 'dddd')   // Вывод "Sunday"
1410715640:convDate('X', 'LLLL')          // Вывод "Sunday, September 14, 2014 7:27 PM"
```

##### Результат
Вывод представляет собой преобразованную строку даты.


#### 8. Шаблоны форматов даты
Описание часто используемых форматов даты (согласно документации DayJS):
- `X`: Unix-метка времени (в секундах), например 1360013296
- `x`: Unix-метка времени в миллисекундах, например 1360013296123
- `YY`: Двузначный год, например 18
- `YYYY`: Четырехзначный год, например 2018
- `M`, `MM`, `MMM`, `MMMM`: Месяц (число, двузначное, сокращение, полное название)
- `D`, `DD`: Число месяца (число, двузначное)
- `d`, `dd`, `ddd`, `dddd`: День недели (число, кратчайшее, сокращение, полное название)
- `H`, `HH`, `h`, `hh`: Часы (24-часовой или 12-часовой формат)
- `m`, `mm`: Минуты
- `s`, `ss`: Секунды
- `SSS`: Миллисекунды (3 цифры)
- `Z`, `ZZ`: Смещение UTC, например +05:00 или +0500
- `A`, `a`: AM/PM
- `Q`: Квартал (1-4)
- `Do`: Дата с порядковым номером, например 1st, 2nd, …
- Другие форматы см. в полной документации.  
  Кроме того, существуют локализованные форматы на основе языка: например, `LT`, `LTS`, `L`, `LL`, `LLL`, `LLLL` и т. д.