Funkce data pro Bicep
Tento článek popisuje funkce Bicep pro práci s daty.
dateTimeAdd
dateTimeAdd(base, duration, [format])
Přidá časovou dobu k základní hodnotě. Očekává se formát ISO 8601.
Obor názvů: sys.
Parametry
Parametr | Požaduje se | Type | Popis |
---|---|---|---|
base | Ano | string | Počáteční hodnota data a času pro sčítání. Použijte formát časového razítka ISO 8601. |
doba trvání | Ano | string | Časová hodnota, která se má přidat do základu. Může to být záporná hodnota. Použijte formát doby trvání ISO 8601. |
format | No | string | Výstupní formát výsledku data a času. Pokud není zadaný, použije se formát základní hodnoty. Použijte standardní formátovací řetězce nebo vlastní formátovací řetězce. |
Vrácená hodnota
Hodnota datetime, která je výsledkem přidání hodnoty doby trvání do základní hodnoty.
Poznámky
Funkce dateTimeAdd
nebere v úvahu přestupné roky a P1Y by se měla interpretovat jako P365D, zatímco P1M by se měla interpretovat jako P30D. Následující soubor Bicep ukazuje několik příkladů:
output addOneYearNonLeap string = dateTimeAdd('2023-01-01 00:00:00Z', 'P1Y') //2024-01-01T00:00:00Z
output addOneYearLeap string = dateTimeAdd('2024-01-01 00:00:00Z', 'P1Y') //2024-12-31T00:00:00Z
output addOneMonthNonLeap string = dateTimeAdd('2023-02-01 00:00:00Z', 'P1M') //2023-03-03T00:00:00Z
output addOneMonthLeap string = dateTimeAdd('2024-02-01 00:00:00Z', 'P1M') //2023-03-02T00:00:00Z
V předchozím příkladu vzhledem k tomu, že rok 2023 není přestupný, výsledek přidání jednoho roku k počátečnímu dni roku je 2024-01-01T00:00:00Z. Pokud naopak přidáte jeden rok do počátečního dne roku 2024, přestupný rok, výsledkem je 2024-12-31T00:00:00Z, ne 2025-01-01T00:00:00Z vzhledem k tomu, že přestupný rok se skládá z 366 dnů místo 365 dnů. Kromě toho se při přidávání jednoho měsíce k prvnímu dni v únoru projeví rozdíl mezi přestupnými a ne přestupnými roky, což vede k různým výsledkům v měsíci.
Příklady
Následující příklad ukazuje různé způsoby přidání časových hodnot.
param baseTime string = utcNow('u')
var add3Years = dateTimeAdd(baseTime, 'P3Y')
var subtract9Days = dateTimeAdd(baseTime, '-P9D')
var add1Hour = dateTimeAdd(baseTime, 'PT1H')
output add3YearsOutput string = add3Years
output subtract9DaysOutput string = subtract9Days
output add1HourOutput string = add1Hour
Při nasazení předchozího příkladu se základním časem 2020-04-07 14:53:14Z
výstupu:
Name | Typ | Hodnota |
---|---|---|
add3YearsOutput | String | 7.4.2023 2:53:14 |
subtract9DaysOutput | String | 29.3.2020 2:53:14 |
add1HourOutput | String | 7.4.2020 13:53:14 |
Následující příklad ukazuje, jak nastavit počáteční čas pro plán automation.
param omsAutomationAccountName string = 'demoAutomation'
param scheduleName string = 'demSchedule1'
param baseTime string = utcNow('u')
var startTime = dateTimeAdd(baseTime, 'PT1H')
...
resource scheduler 'Microsoft.Automation/automationAccounts/schedules@2023-11-01' = {
name: concat(omsAutomationAccountName, '/', scheduleName)
properties: {
description: 'Demo Scheduler'
startTime: startTime
interval: 1
frequency: 'Hour'
}
}
dateTimeFromEpoch
dateTimeFromEpoch(epochTime)
Převede celočíselnou hodnotu epochového času na hodnotu data a času ISO 8601.
Obor názvů: sys.
Parametry
Parametr | Požaduje se | Type | Popis |
---|---|---|---|
epochTime | Ano | int | Epocha, která se má převést na řetězec datetime. |
Vrácená hodnota
Řetězec data a času ISO 8601.
Poznámky
Tato funkce vyžaduje rozhraní příkazového řádku Bicep verze 0.5.X nebo vyšší.
Příklad
Následující příklad ukazuje výstupní hodnoty pro funkce epochového času.
param convertedEpoch int = dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))
var convertedDatetime = dateTimeFromEpoch(convertedEpoch)
output epochValue int = convertedEpoch
output datetimeValue string = convertedDatetime
Výstup je:
Name | Typ | Hodnota |
---|---|---|
datetimeValue | String | 2023-05-02T15:16:13Z |
epochValue | Int | 1683040573 |
dateTimeToEpoch
dateTimeToEpoch(dateTime)
Převede řetězec data a času ISO 8601 na celočíselnou hodnotu epochy.
Obor názvů: sys.
Parametry
Parametr | Požaduje se | Type | Popis |
---|---|---|---|
data a času. | Ano | string | Řetězec datetime, který se má převést na epochový čas. |
Vrácená hodnota
Celé číslo, které představuje počet sekund od půlnoci 1. ledna 1970.
Poznámky
Tato funkce vyžaduje rozhraní příkazového řádku Bicep verze 0.5.X nebo vyšší.
Příklady
Následující příklad ukazuje výstupní hodnoty pro funkce epochového času.
param convertedEpoch int = dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))
var convertedDatetime = dateTimeFromEpoch(convertedEpoch)
output epochValue int = convertedEpoch
output datetimeValue string = convertedDatetime
Výstup je:
Name | Typ | Hodnota |
---|---|---|
datetimeValue | String | 2023-05-02T15:16:13Z |
epochValue | Int | 1683040573 |
V dalším příkladu se k nastavení vypršení platnosti klíče v trezoru klíčů používá hodnota epochy.
@description('The location into which the resources should be deployed.')
param location string = resourceGroup().location
@description('The Tenant Id that should be used throughout the deployment.')
param tenantId string = subscription().tenantId
@description('The name of the existing User Assigned Identity.')
param userAssignedIdentityName string
@description('The name of the resource group for the User Assigned Identity.')
param userAssignedIdentityResourceGroupName string
@description('The name of the Key Vault.')
param keyVaultName string = 'vault-${uniqueString(resourceGroup().id)}'
@description('Name of the key in the Key Vault')
param keyVaultKeyName string = 'cmkey'
@description('Expiration time of the key')
param keyExpiration int = dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))
@description('The name of the Storage Account')
param storageAccountName string = 'storage${uniqueString(resourceGroup().id)}'
resource userAssignedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2018-11-30' existing = {
scope: resourceGroup(userAssignedIdentityResourceGroupName)
name: userAssignedIdentityName
}
resource keyVault 'Microsoft.KeyVault/vaults@2021-10-01' = {
name: keyVaultName
location: location
properties: {
sku: {
name: 'standard'
family: 'A'
}
enableSoftDelete: true
enablePurgeProtection: true
enabledForDiskEncryption: true
tenantId: tenantId
accessPolicies: [
{
tenantId: tenantId
permissions: {
keys: [
'unwrapKey'
'wrapKey'
'get'
]
}
objectId: userAssignedIdentity.properties.principalId
}
]
}
}
resource kvKey 'Microsoft.KeyVault/vaults/keys@2021-10-01' = {
parent: keyVault
name: keyVaultKeyName
properties: {
attributes: {
enabled: true
exp: keyExpiration
}
keySize: 4096
kty: 'RSA'
}
}
resource storage 'Microsoft.Storage/storageAccounts@2021-04-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'${userAssignedIdentity.id}': {}
}
}
properties: {
accessTier: 'Hot'
supportsHttpsTrafficOnly: true
minimumTlsVersion: 'TLS1_2'
encryption: {
identity: {
userAssignedIdentity: userAssignedIdentity.id
}
services: {
blob: {
enabled: true
}
}
keySource: 'Microsoft.Keyvault'
keyvaultproperties: {
keyname: kvKey.name
keyvaulturi: endsWith(keyVault.properties.vaultUri,'/') ? substring(keyVault.properties.vaultUri,0,length(keyVault.properties.vaultUri)-1) : keyVault.properties.vaultUri
}
}
}
}
UtcNow
utcNow(format)
Vrátí aktuální hodnotu data a času (UTC) v zadaném formátu. Pokud není k dispozici žádný formát, použije se formát ISO 8601 (yyyyMMddTHHmmssZ
). Tuto funkci lze použít pouze ve výchozí hodnotě parametru.
Obor názvů: sys.
Parametry
Parametr | Požaduje se | Type | Popis |
---|---|---|---|
format | No | string | Zakódovaná hodnota identifikátoru URI, která se má převést na řetězec. Použijte standardní formátovací řetězce nebo vlastní formátovací řetězce. |
Poznámky
Tuto funkci můžete použít pouze ve výrazu pro výchozí hodnotu parametru. Použití této funkce kdekoli jinde v souboru Bicep vrátí chybu. Funkce není povolená v jiných částech souboru Bicep, protože pokaždé, když se volá, vrátí jinou hodnotu. Nasazení stejného souboru Bicep se stejnými parametry by spolehlivě nezískuilo stejné výsledky.
Pokud použijete možnost vrácení chyby do dřívějšího úspěšného nasazení a dřívější nasazení obsahuje parametr, který používá utcNow, parametr se znovu nevyhodnotuje. Místo toho se hodnota parametru z předchozího nasazení automaticky znovu použije v nasazení vrácení zpět.
Při opětovném nasazení souboru Bicep, který pro výchozí hodnotu spoléhá na funkci UTCNow, buďte opatrní. Když znovu nasadíte parametr a nezadáte hodnotu parametru, funkce se znovu zhodnocuje. Pokud chcete místo vytvoření nového prostředku aktualizovat existující prostředek, předejte hodnotu parametru z předchozího nasazení.
Vrácená hodnota
Aktuální hodnota data a času UTC.
Příklady
Následující příklad ukazuje různé formáty pro hodnotu datetime.
param utcValue string = utcNow()
param utcShortValue string = utcNow('d')
param utcCustomValue string = utcNow('M d')
output utcOutput string = utcValue
output utcShortOutput string = utcShortValue
output utcCustomOutput string = utcCustomValue
Výstup z předchozího příkladu se pro každé nasazení liší, ale bude vypadat nějak takto:
Name | Typ | Hodnota |
---|---|---|
utcOutput | string | 20190305T175318Z |
utcShortOutput | string | 03/05/2019 |
utcCustomOutput | string | 3 5 |
Následující příklad ukazuje, jak použít hodnotu z funkce při nastavování hodnoty značky.
param utcShort string = utcNow('d')
param rgName string
resource myRg 'Microsoft.Resources/resourceGroups@2024-03-01' = {
name: rgName
location: 'westeurope'
tags: {
createdDate: utcShort
}
}
output utcShortOutput string = utcShort
Další kroky
- Popis oddílů v souboru Bicep najdete v tématu Vysvětlení struktury a syntaxe souborů Bicep.