Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описываются функции для работы с датами в шаблоне Azure Resource Manager (шаблон ARM).
Подсказка
Bicep рекомендуется, так как он предлагает те же возможности, что и шаблоны ARM, а синтаксис проще использовать. Дополнительные сведения см. в разделе date "Функции".
dateTimeAdd
dateTimeAdd(base, duration, [format])
Добавляет длительность времени в базовое значение. Ожидается формат ISO 8601.
В Bicep используйте функцию dateTimeAdd .
Параметры
| Параметр | Обязательно | Тип | Описание |
|---|---|---|---|
| основа | Да | струна | Начальное значение datetime для добавления. Используйте формат метки времени ISO 8601. |
| продолжительность | Да | струна | Значение времени, добавляемое в базу. Это может быть отрицательное значение. Используйте формат длительности ISO 8601. |
| формат | нет | струна | Формат выходных данных для результата datetime. Если это не указано, используется формат базового значения. Используйте строки стандартного илинастраиваемого формата . |
Возвращаемое значение
Значение даты и времени, которое приводит к добавлению значения длительности в базовое значение.
Замечания
Функция dateTimeAdd не принимает во внимание високосные годы, и P1Y следует интерпретировать как P365D, а P1M следует интерпретировать как P30D. В следующем json показаны некоторые примеры:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [],
"outputs": {
"addOneYearNonLeap": {
"type": "string",
"value": "[dateTimeAdd('2023-01-01 00:00:00Z', 'P1Y')]" //2024-01-01T00:00:00Z
},
"addOneYearLeap": {
"type": "string",
"value": "[dateTimeAdd('2024-01-01 00:00:00Z', 'P1Y')]" //2024-12-31T00:00:00Z
},
"addOneMonthNonLeap": {
"type": "string",
"value": "[dateTimeAdd('2023-02-01 00:00:00Z', 'P1M')]" //2023-03-03T00:00:00Z
},
"addOneMonthLeap": {
"type": "string",
"value": "[dateTimeAdd('2024-02-01 00:00:00Z', 'P1M')]" //2024-03-02T00:00:00Z
}
}
}
В предыдущем примере, учитывая 2023 год в качестве непрыжного года, результат добавления одного года в начальный день года — 2024-01-01T00:00:00:00Z. И наоборот, добавление одного года в начальный день 2024 года, високосный год, приводит к 2024-12-31T00:00:00Z, а не 2025-01-01T00:00Z, учитывая, что високосный год составляет 366 дней вместо 365 дней. Кроме того, различие между прыжками и непрыжными годами становится очевидным при добавлении одного месяца в первый день февраля, что приводит к разным результатам дня месяца.
Примеры
В следующем примере шаблона показаны различные способы добавления значений времени:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"baseTime": {
"type": "string",
"defaultValue": "[utcNow('u')]"
}
},
"variables": {
"add3Years": "[dateTimeAdd(parameters('baseTime'), 'P3Y')]",
"subtract9Days": "[dateTimeAdd(parameters('baseTime'), '-P9D')]",
"add1Hour": "[dateTimeAdd(parameters('baseTime'), 'PT1H')]"
},
"resources": [],
"outputs": {
"add3YearsOutput": {
"value": "[variables('add3Years')]",
"type": "string"
},
"subtract9DaysOutput": {
"value": "[variables('subtract9Days')]",
"type": "string"
},
"add1HourOutput": {
"value": "[variables('add1Hour')]",
"type": "string"
}
}
}
При развертывании предыдущего 2020-04-07 14:53:14Zшаблона с базовым временем выходные данные:
| Имя | Тип | Ценность |
|---|---|---|
| add3YearsOutput | Струна | 4.7.2023 2:53:14 |
| вычитание 9DaysOutput | Струна | 3.29.2020 2:53:14 |
| add1HourOutput | Струна | 4.7.2020 3:53:14 |
В следующем примере шаблона показано, как задать время начала для расписания автоматизации:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"omsAutomationAccountName": {
"type": "string",
"defaultValue": "demoAutomation",
"metadata": {
"description": "Use an existing Automation account."
}
},
"scheduleName": {
"type": "string",
"defaultValue": "demoSchedule1",
"metadata": {
"description": "Name of the new schedule."
}
},
"baseTime": {
"type": "string",
"defaultValue": "[utcNow('u')]",
"metadata": {
"description": "Schedule will start one hour from this time."
}
}
},
"variables": {
"startTime": "[dateTimeAdd(parameters('baseTime'), 'PT1H')]"
},
"resources": [
...
{
"type": "Microsoft.Automation/automationAccounts/schedules",
"apiVersion": "2024-10-23",
"name": "[concat(parameters('omsAutomationAccountName'), '/', parameters('scheduleName'))]",
"properties": {
"description": "Demo Scheduler",
"startTime": "[variables('startTime')]",
"interval": 1,
"frequency": "Hour"
}
}
],
"outputs": {
}
}
dateTimeFromEpoch
dateTimeFromEpoch(epochTime)
Преобразует целочисленное значение времени эпохи в значение даты и времени ISO 8601.
В Bicep используйте функцию dateTimeFromEpoch .
Параметры
| Параметр | Обязательно | Тип | Описание |
|---|---|---|---|
| epochTime | Да | инт | Время эпохи для преобразования в строку datetime. |
Возвращаемое значение
Строка даты и времени ISO 8601.
Пример
В следующем примере показаны выходные epoch значения для функций времени:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"convertedEpoch": {
"type": "int",
"defaultValue": "[dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))]"
}
},
"variables": {
"convertedDatetime": "[dateTimeFromEpoch(parameters('convertedEpoch'))]"
},
"resources": [],
"outputs": {
"epochValue": {
"type": "int",
"value": "[parameters('convertedEpoch')]"
},
"datetimeValue": {
"type": "string",
"value": "[variables('convertedDatetime')]"
}
}
}
Результат выглядит так:
| Имя | Тип | Ценность |
|---|---|---|
| datetimeValue | Струна | 2023-05-02T15:16:13Z |
| epochValue | int | 1683040573 |
dateTimeToEpoch
dateTimeToEpoch(dateTime)
Преобразует строку даты и времени ISO 8601 в целочисленное значение времени эпохи.
В Bicep используйте функцию dateTimeToEpoch .
Параметры
| Параметр | Обязательно | Тип | Описание |
|---|---|---|---|
| дата и время | Да | струна | Строка даты и времени для преобразования в эпоху. |
Возвращаемое значение
Целое число, представляющее количество секунд с полуночи 1 января 1970 года.
Примеры
В следующем примере показаны выходные epoch значения для функций времени:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"convertedEpoch": {
"type": "int",
"defaultValue": "[dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))]"
}
},
"variables": {
"convertedDatetime": "[dateTimeFromEpoch(parameters('convertedEpoch'))]"
},
"resources": [],
"outputs": {
"epochValue": {
"type": "int",
"value": "[parameters('convertedEpoch')]"
},
"datetimeValue": {
"type": "string",
"value": "[variables('convertedDatetime')]"
}
}
}
Результат выглядит так:
| Имя | Тип | Ценность |
|---|---|---|
| datetimeValue | Струна | 2023-05-02T15:16:13Z |
| epochValue | int | 1683040573 |
В следующем примере используется значение времени эпохи для задания срока действия ключа в хранилище ключей:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.5.6.12127",
"templateHash": "16023511331197397029"
}
},
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "The location into which the resources should be deployed."
}
},
"tenantId": {
"type": "string",
"defaultValue": "[subscription().tenantId]",
"metadata": {
"description": "The Tenant Id that should be used throughout the deployment."
}
},
"userAssignedIdentityName": {
"type": "string",
"metadata": {
"description": "The name of the existing User Assigned Identity."
}
},
"userAssignedIdentityResourceGroupName": {
"type": "string",
"metadata": {
"description": "The name of the resource group for the User Assigned Identity."
}
},
"keyVaultName": {
"type": "string",
"defaultValue": "[format('vault-{0}', uniqueString(resourceGroup().id))]",
"metadata": {
"description": "The name of the Key Vault."
}
},
"keyVaultKeyName": {
"type": "string",
"defaultValue": "cmkey",
"metadata": {
"description": "Name of the key in the Key Vault"
}
},
"keyExpiration": {
"type": "int",
"defaultValue": "[dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))]",
"metadata": {
"description": "Expiration time of the key"
}
},
"storageAccountName": {
"type": "string",
"defaultValue": "[format('storage{0}', uniqueString(resourceGroup().id))]",
"metadata": {
"description": "The name of the Storage Account"
}
}
},
"resources": [
{
"type": "Microsoft.KeyVault/vaults",
"apiVersion": "2021-10-01",
"name": "[parameters('keyVaultName')]",
"location": "[parameters('location')]",
"properties": {
"sku": {
"name": "standard",
"family": "A"
},
"enableSoftDelete": true,
"enablePurgeProtection": true,
"enabledForDiskEncryption": true,
"tenantId": "[parameters('tenantId')]",
"accessPolicies": [
{
"tenantId": "[parameters('tenantId')]",
"permissions": {
"keys": [
"unwrapKey",
"wrapKey",
"get"
]
},
"objectId": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('userAssignedIdentityResourceGroupName')), 'Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentityName')), '2018-11-30').principalId]"
}
]
}
},
{
"type": "Microsoft.KeyVault/vaults/keys",
"apiVersion": "2021-10-01",
"name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('keyVaultKeyName'))]",
"properties": {
"attributes": {
"enabled": true,
"exp": "[parameters('keyExpiration')]"
},
"keySize": 4096,
"kty": "RSA"
},
"dependsOn": [
"[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
]
},
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"[format('{0}', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('userAssignedIdentityResourceGroupName')), 'Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentityName')))]": {}
}
},
"properties": {
"accessTier": "Hot",
"supportsHttpsTrafficOnly": true,
"minimumTlsVersion": "TLS1_2",
"encryption": {
"identity": {
"userAssignedIdentity": "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('userAssignedIdentityResourceGroupName')), 'Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentityName'))]"
},
"services": {
"blob": {
"enabled": true
}
},
"keySource": "Microsoft.Keyvault",
"keyvaultproperties": {
"keyname": "[parameters('keyVaultKeyName')]",
"keyvaulturi": "[if(endsWith(reference(resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))).vaultUri, '/'), substring(reference(resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))).vaultUri, 0, sub(length(reference(resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))).vaultUri), 1)), reference(resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))).vaultUri)]"
}
}
},
"dependsOn": [
"[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]",
"[resourceId('Microsoft.KeyVault/vaults/keys', parameters('keyVaultName'), parameters('keyVaultKeyName'))]"
]
}
]
}
UTCNow
utcNow(format)
Возвращает текущее значение даты и времени (UTC) в указанном формате. Если формат не указан, используется формат ISO 8601 (yyyyMMddTHHmmssZ).
Эта функция может использоваться только в значении параметра по умолчанию.
В Bicep используйте функцию utcNow .
Параметры
| Параметр | Обязательно | Тип | Описание |
|---|---|---|---|
| формат | нет | струна | Значение, закодированное в формате URI, которое необходимо преобразовать в строку. Используйте строки стандартного илинастраиваемого формата. |
Замечания
Эту функцию можно использовать только в выражении для значения параметра по умолчанию. При использовании этой функции где-либо еще в шаблоне возвращается ошибка. Функция не разрешена в других частях шаблона, поскольку она возвращает разные значения при каждом вызове. Развертывание одного и того же шаблона с одинаковыми параметрами, как правило, не будет возвращать одинаковые результаты.
Если вы используете параметр для отката ошибки к предыдущему успешному развертыванию, если предыдущее развертывание включает параметр, который использует utcNow, параметр не будет переоценены. Вместо этого значение параметра из предыдущего развертывания автоматически используется повторно в развертывании отката.
Будьте внимательны при повторном развертывании шаблона, который использует utcNow функцию для значения по умолчанию. При повторном развертывании без ввода значения параметра функция вычисляется повторно. Если нужно обновить существующий ресурс, а не создать новый, следует передать значение параметра из предыдущего развертывания.
Возвращаемое значение
Текущее значение даты и времени в формате UTC.
Примеры
В следующем примере шаблона показаны различные форматы значения datetime:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"utcValue": {
"type": "string",
"defaultValue": "[utcNow()]"
},
"utcShortValue": {
"type": "string",
"defaultValue": "[utcNow('d')]"
},
"utcCustomValue": {
"type": "string",
"defaultValue": "[utcNow('M d')]"
}
},
"resources": [
],
"outputs": {
"utcOutput": {
"type": "string",
"value": "[parameters('utcValue')]"
},
"utcShortOutput": {
"type": "string",
"value": "[parameters('utcShortValue')]"
},
"utcCustomOutput": {
"type": "string",
"value": "[parameters('utcCustomValue')]"
}
}
}
Выходные данные из предыдущего примера различаются для каждого развертывания, но будут выглядеть примерно так:
| Имя | Тип | Ценность |
|---|---|---|
| UTCOutput | струна | 20190305T175318Z |
| utcShortOutput | струна | 03/05/2019 |
| utcCustomOutput | струна | 3 5 |
В следующем примере показано, как использовать значение из функции при установке значения тега:
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"utcShort": {
"type": "string",
"defaultValue": "[utcNow('d')]"
},
"rgName": {
"type": "string"
}
},
"resources": [
{
"type": "Microsoft.Resources/resourceGroups",
"apiVersion": "2025-04-01",
"name": "[parameters('rgName')]",
"location": "westeurope",
"tags": {
"createdDate": "[parameters('utcShort')]"
},
"properties": {}
}
],
"outputs": {
"utcShortOutput": {
"type": "string",
"value": "[parameters('utcShort')]"
}
}
}
Дальнейшие шаги
Дополнительные сведения о разделах шаблона ARM см. в структуре и синтаксисе шаблонов ARM.