Bicep için tarih işlevleri
Bu makalede, tarihlerle çalışmaya yönelik Bicep işlevleri açıklanmaktadır.
dateTimeAdd
dateTimeAdd(base, duration, [format])
Temel değere bir süre ekler. ISO 8601 biçimi beklenir.
Ad alanı: sys.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
temel | Yes | Dize | Toplama için başlangıç datetime değeri. ISO 8601 zaman damgası biçimini kullanın. |
süre | Yes | Dize | Tabana eklenecek zaman değeri. Negatif bir değer olabilir. ISO 8601 süre biçimini kullanın. |
format | Hayır | Dize | Tarih saat sonucunun çıkış biçimi. Sağlanmazsa, temel değerin biçimi kullanılır. Standart biçim dizelerini veya özel biçim dizelerini kullanın. |
Dönüş değeri
Süre değerini temel değere eklemenin sonucu olan tarih saat değeri.
Açıklamalar
İşlev dateTimeAdd
artık yılları dikkate almaz ve P1Y P365D olarak, P1M ise P30D olarak yorumlanmalıdır. Aşağıdaki Bicep dosyasında bazı örnekler gösterilmektedir:
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
Yukarıdaki örnekte, 2023'ün artık olmayan bir yıl olduğu düşünüldüğünde, yılın ilk gününe bir yıl eklemenin sonucu 2024-01-01T00:00:00Z'dir. Buna karşılık, artık yıl olan 2024'ün başlangıç gününe bir yıl eklemek, artık yılın 365 gün yerine 366 gün içermesi nedeniyle 2025-01-01T00:00:00Z değil 2024-12-31T00:00:00Z ile sonuçlanmaktadır. Ayrıca, artık ve artık olmayan yıllar arasındaki ayrım, Şubat ayının ilk gününe bir ay eklerken belirginleşir ve bu da farklı ayın günü sonuçlarına yol açar.
Örnekler
Aşağıdaki örnekte, zaman değerleri eklemenin farklı yolları gösterilmektedir.
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
Yukarıdaki örnek temel zamanıyla 2020-04-07 14:53:14Z
dağıtıldığında çıkış şöyle olur:
Adı | Tür | Değer |
---|---|---|
add3YearsOutput | String | 7/4/2023 14:53:14 |
subtract9DaysOutput | String | 29.03.2020 14:53:14 |
add1HourOutput | String | 7/4/2020 15:53:14 |
Sonraki örnekte Otomasyon zamanlaması için başlangıç saatinin nasıl ayarlanacağı gösterilmektedir.
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)
Bir dönem süresi tamsayı değerini ISO 8601 tarih saatine dönüştürür.
Ad alanı: sys.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
epochTime | Yes | int | Tarih saat dizesine dönüştürülecek dönem süresi. |
Dönüş değeri
ISO 8601 tarih saat dizesi.
Açıklamalar
Bu işlev Için Bicep CLI sürüm 0.5.X veya üzeri gerekir.
Örnek
Aşağıdaki örnek, dönem süresi işlevleri için çıkış değerlerini gösterir.
param convertedEpoch int = dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))
var convertedDatetime = dateTimeFromEpoch(convertedEpoch)
output epochValue int = convertedEpoch
output datetimeValue string = convertedDatetime
Çıktı şu olur:
Adı | Tür | Değer |
---|---|---|
datetimeValue | String | 2023-05-02T15:16:13Z |
epochValue | Int | 1683040573 |
dateTimeToEpoch
dateTimeToEpoch(dateTime)
ISO 8601 tarih saat dizesini bir dönem zamanı tamsayı değerine dönüştürür.
Ad alanı: sys.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
tarih saat | Yes | Dize | Bir dönem saatine dönüştürülecek datetime dizesi. |
Dönüş değeri
1 Ocak 1970'te gece yarısından saniye sayısını gösteren tamsayı.
Açıklamalar
Bu işlev Için Bicep CLI sürüm 0.5.X veya üzeri gerekir.
Örnekler
Aşağıdaki örnek, dönem süresi işlevleri için çıkış değerlerini gösterir.
param convertedEpoch int = dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))
var convertedDatetime = dateTimeFromEpoch(convertedEpoch)
output epochValue int = convertedEpoch
output datetimeValue string = convertedDatetime
Çıktı şu olur:
Adı | Tür | Değer |
---|---|---|
datetimeValue | String | 2023-05-02T15:16:13Z |
epochValue | Int | 1683040573 |
Sonraki örnekte anahtar kasasındaki bir anahtarın süre sonunu ayarlamak için dönem süresi değeri kullanılır.
@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)
Belirtilen biçimde geçerli (UTC) tarih saat değerini döndürür. Biçim sağlanmazsa ISO 8601 (yyyyMMddTHHmmssZ
) biçimi kullanılır. Bu işlev yalnızca bir parametre için varsayılan değerde kullanılabilir.
Ad alanı: sys.
Parametreler
Parametre | Zorunlu | Türü | Açıklama |
---|---|---|---|
format | Hayır | Dize | Dizeye dönüştürmek için kodlanmış URI değeri. Standart biçim dizelerini veya özel biçim dizelerini kullanın. |
Açıklamalar
Bu işlevi yalnızca bir parametrenin varsayılan değeri için bir ifade içinde kullanabilirsiniz. Bu işlevi bicep dosyasında başka bir yerde kullanmak bir hata döndürür. Bicep dosyasının diğer bölümlerinde işleve izin verilmez çünkü her çağrıldığında farklı bir değer döndürür. Aynı Bicep dosyasının aynı parametrelerle dağıtılması aynı sonuçları güvenilir bir şekilde üretmez.
Hata durumunda önceki başarılı bir dağıtıma geri alma seçeneğini kullanırsanız ve önceki dağıtım utcNow kullanan bir parametre içeriyorsa, parametre yeniden değerlendirilmez. Bunun yerine, önceki dağıtımdaki parametre değeri geri alma dağıtımında otomatik olarak yeniden kullanılır.
Varsayılan bir değer için utcNow işlevini kullanan bicep dosyasını yeniden dağıtmaya dikkat edin. Yeniden dağıttığınızda ve parametresi için bir değer sağlamadığınızda işlev yeniden değerlendirilir. Yeni bir kaynak oluşturmak yerine var olan bir kaynağı güncelleştirmek istiyorsanız, önceki dağıtımdan parametre değerini geçirin.
Dönüş değeri
Geçerli UTC tarih saat değeri.
Örnekler
Aşağıdaki örnekte tarih saat değeri için farklı biçimler gösterilmektedir.
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
Yukarıdaki örnekten alınan çıkış her dağıtım için farklılık gösterir ancak şuna benzer olacaktır:
Adı | Tür | Değer |
---|---|---|
utcOutput | Dize | 20190305T175318Z |
utcShortOutput | Dize | 03/05/2019 |
utcCustomOutput | Dize | 3 5 |
Sonraki örnekte, etiket değeri ayarlanırken işlevden bir değerin nasıl kullanılacağı gösterilmektedir.
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
Sonraki adımlar
- Bicep dosyasındaki bölümlerin açıklaması için bkz . Bicep dosyalarının yapısını ve söz dizimini anlama.