Datumfunktioner för Bicep
Den här artikeln beskriver Bicep-funktionerna för att arbeta med datum.
dateTimeLägg till
dateTimeAdd(base, duration, [format])
Lägger till en tidsvaraktighet i ett basvärde. ISO 8601-format förväntas.
Namnområde: sys.
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
bas | Ja | sträng | Startvärdet för datetime för tillägget. Använd ISO 8601-tidsstämpelformat. |
varaktighet | Ja | sträng | Tidsvärdet som ska läggas till i basen. Det kan vara ett negativt värde. Använd ISO 8601-varaktighetsformat. |
format | Nej | sträng | Utdataformatet för datumtidsresultatet. Om det inte anges används formatet för basvärdet. Använd antingen standardformatsträngar eller anpassade formatsträngar. |
Returvärde
Datetime-värdet som resulterar i att varaktighetsvärdet läggs till i basvärdet.
Kommentarer
Funktionen dateTimeAdd
tar inte hänsyn till skottår och P1Y ska tolkas som P365D, medan P1M ska tolkas som P30D. Följande Bicep-fil visar några exempel:
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
I föregående exempel, med tanke på 2023 som ett icke-skottår, är resultatet av att lägga till ett år till den första dagen på året 2024-01-01T00:00:00Z. Omvänt, att lägga till ett år till startdagen 2024, ett skottår, resulterar i 2024-12-31T00:00:00Z, inte 2025-01-01T00:00:00Z, med tanke på att ett skottår omfattar 366 dagar i stället för 365 dagar. Dessutom blir skillnaden mellan skott- och icke-skottår uppenbar när man lägger till en månad till den första dagen i februari, vilket leder till varierande resultat från månadens dag.
Exempel
I följande exempel visas olika sätt att lägga till tidsvärden.
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
När föregående exempel distribueras med bastiden 2020-04-07 14:53:14Z
är utdata:
Namn | Typ | Värde |
---|---|---|
add3YearsOutput | String | 2023-04-07 14:53:14 |
subtract9DaysOutput | String | 2020-03-29 14:53:14 |
add1HourOutput | String | 2020-04-07 15:53:14 |
I nästa exempel visas hur du anger starttiden för ett Automation-schema.
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)
Konverterar ett tidstals heltalsvärde för epok till en ISO 8601-datetime.
Namnområde: sys.
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
epochTime | Ja | heltal | Tidsåtgången för att konvertera till en datetime-sträng. |
Returvärde
En ISO 8601 datetime-sträng.
Kommentarer
Den här funktionen kräver Bicep CLI version 0.5.X eller senare.
Exempel
I följande exempel visas utdatavärden för epoktidsfunktionerna.
param convertedEpoch int = dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))
var convertedDatetime = dateTimeFromEpoch(convertedEpoch)
output epochValue int = convertedEpoch
output datetimeValue string = convertedDatetime
Resultatet är:
Namn | Typ | Värde |
---|---|---|
datetimeValue | String | 2023-05-02T15:16:13Z |
epochValue | Int | 1683040573 |
dateTimeToEpoch
dateTimeToEpoch(dateTime)
Konverterar en ISO 8601 datetime-sträng till ett heltalsvärde för epoktid.
Namnområde: sys.
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
Datetime | Ja | sträng | Datetime-strängen som ska konverteras till en epoktid. |
Returvärde
Ett heltal som representerar antalet sekunder från midnatt den 1 januari 1970.
Kommentarer
Den här funktionen kräver Bicep CLI version 0.5.X eller senare.
Exempel
I följande exempel visas utdatavärden för epoktidsfunktionerna.
param convertedEpoch int = dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))
var convertedDatetime = dateTimeFromEpoch(convertedEpoch)
output epochValue int = convertedEpoch
output datetimeValue string = convertedDatetime
Resultatet är:
Namn | Typ | Värde |
---|---|---|
datetimeValue | String | 2023-05-02T15:16:13Z |
epochValue | Int | 1683040573 |
I nästa exempel används tidsvärdet epok för att ange förfallodatum för en nyckel i ett nyckelvalv.
@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)
Returnerar det aktuella datetime-värdet (UTC) i det angivna formatet. Om inget format anges används FORMATET ISO 8601 (yyyyMMddTHHmmssZ
). Den här funktionen kan bara användas i standardvärdet för en parameter.
Namnområde: sys.
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
format | Nej | sträng | Det URI-kodade värdet som ska konverteras till en sträng. Använd antingen standardformatsträngar eller anpassade formatsträngar. |
Kommentarer
Du kan bara använda den här funktionen i ett uttryck för standardvärdet för en parameter. Om du använder den här funktionen någon annanstans i en Bicep-fil returneras ett fel. Funktionen tillåts inte i andra delar av Bicep-filen eftersom den returnerar ett annat värde varje gång den anropas. Att distribuera samma Bicep-fil med samma parametrar skulle inte ge samma resultat på ett tillförlitligt sätt.
Om du använder alternativet för att återställa ett fel till en tidigare lyckad distribution, och den tidigare distributionen innehåller en parameter som använder utcNow, utvärderas inte parametern igen. I stället återanvänds parametervärdet från den tidigare distributionen automatiskt i återställningsdistributionen.
Var försiktig med att distribuera om en Bicep-fil som förlitar sig på utcNow-funktionen för ett standardvärde. När du distribuerar om och inte anger något värde för parametern utvärderas funktionen igen. Om du vill uppdatera en befintlig resurs i stället för att skapa en ny skickar du parametervärdet från den tidigare distributionen.
Returvärde
Det aktuella UTC-datetime-värdet.
Exempel
I följande exempel visas olika format för datetime-värdet.
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
Utdata från föregående exempel varierar för varje distribution men kommer att likna:
Namn | Typ | Värde |
---|---|---|
utcOutput | sträng | 20190305T175318Z |
utcShortOutput | sträng | 03/05/2019 |
utcCustomOutput | sträng | 3 5 |
I nästa exempel visas hur du använder ett värde från funktionen när du anger ett taggvärde.
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
Nästa steg
- En beskrivning av avsnitten i en Bicep-fil finns i Förstå strukturen och syntaxen för Bicep-filer.