Fungsi tanggal untuk Bicep
Artikel ini menjelaskan fungsi Bicep untuk bekerja dengan tanggal.
dateTimeAdd
dateTimeAdd(base, duration, [format])
Menambahkan durasi waktu ke nilai dasar. Format ISO 8601 diharapkan.
Namespace: sys.
Parameter
Parameter | Wajib | Tipe | Deskripsi |
---|---|---|---|
dasar | Ya | string | Nilai tanggalwaktu mulai untuk penambahan. Gunakan format tanda waktu ISO 8601. |
durasi | Ya | string | Nilai waktu untuk ditambahkan ke basis. Hal ini bisa menjadi nilai negatif. Gunakan format durasi ISO 8601. |
format | No | string | Format keluaran untuk hasil tanggal waktu. Jika tidak disediakan, format nilai dasar digunakan. Gunakan untai (karakter) format standar atau untai (karakter) format kustom. |
Nilai hasil
Nilai tanggalwaktu yang hasil dari menambahkan nilai durasi ke nilai dasar.
Keterangan
Fungsi dateTimeAdd
ini tidak mempertimbangkan tahun kampung, dan P1Y harus ditafsirkan sebagai P365D, sementara P1M harus ditafsirkan sebagai P30D. File Bicep berikut menunjukkan beberapa contoh:
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
Dalam contoh sebelumnya, mengingat 2023 sebagai tahun non-kampung, hasil penambahan satu tahun ke hari awal tahun adalah 2024-01-01T00:00:00Z. Sebaliknya, menambahkan satu tahun ke hari mulai 2024, tahun kabut, menghasilkan 2024-12-31T00:00:00Z, bukan 2025-01-01T00:00:00Z, mengingat bahwa tahun kabut terdiri dari 366 hari alih-alih 365 hari. Selain itu, perbedaan antara tahun lompatan dan non-lompatan menjadi jelas ketika menambahkan satu bulan ke hari pertama Bulan Februari, yang mengarah ke berbagai hasil hari dalam sebulan.
Contoh
Contoh berikut ini menampilkan berbagai cara untuk menambahkan nilai waktu.
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
Ketika template sebelumnya disebarkan dengan waktu dasar 2020-04-07 14:53:14Z
, keluarannya adalah:
Nama | Jenis | Nilai |
---|---|---|
add3YearsOutput | String | 4/7/2023 14:53:14 WIB |
subtract9DaysOutput | String | 3/29/2020 14:53:14 WIB |
add1HourOutput | String | 4/7/2020 15:53:14 WIB |
Contoh berikutnya menampilkan cara mengatur waktu mulai untuk jadwal 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)
Mengonversi nilai bilangan bulat waktu epoch menjadi tanggalwaktu ISO 8601.
Namespace: sys.
Parameter
Parameter | Wajib | Tipe | Deskripsi |
---|---|---|---|
epochTime | Ya | int | Waktu epoch untuk mengonversi ke string tanggalwaktu. |
Nilai hasil
String tanggalwaktu ISO 8601.
Keterangan
Fungsi ini memerlukan Bicep CLI versi 0.5.X atau yang lebih tinggi.
Contoh
Contoh berikut menunjukkan nilai output untuk fungsi waktu epoch.
param convertedEpoch int = dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))
var convertedDatetime = dateTimeFromEpoch(convertedEpoch)
output epochValue int = convertedEpoch
output datetimeValue string = convertedDatetime
Outputnya adalah:
Nama | Jenis | Nilai |
---|---|---|
datetimeValue | String | 2023-05-02T15:16:13Z |
epochValue | Int | 1683040573 |
dateTimeToEpoch
dateTimeToEpoch(dateTime)
Mengonversi string tanggalwaktu ISO 8601 menjadi nilai bilangan bulat waktu epoch.
Namespace: sys.
Parameter
Parameter | Wajib | Tipe | Deskripsi |
---|---|---|---|
tanggalWaktu | Ya | string | String tanggalwaktu untuk dikonversi ke waktu epoch. |
Nilai hasil
Bilangan bulat yang mewakili jumlah detik dari tengah malam pada 1 Januari 1970.
Keterangan
Fungsi ini memerlukan Bicep CLI versi 0.5.X atau yang lebih tinggi.
Contoh
Contoh berikut menunjukkan nilai output untuk fungsi waktu epoch.
param convertedEpoch int = dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))
var convertedDatetime = dateTimeFromEpoch(convertedEpoch)
output epochValue int = convertedEpoch
output datetimeValue string = convertedDatetime
Outputnya adalah:
Nama | Jenis | Nilai |
---|---|---|
datetimeValue | String | 2023-05-02T15:16:13Z |
epochValue | Int | 1683040573 |
Contoh berikutnya menggunakan nilai waktu epoch untuk mengatur kedaluwarsa untuk kunci dalam brankas kunci.
@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)
Mengembalikan nilai tanggalwaktu (UTC) saat ini dalam format yang ditentukan. Jika tidak ada format yang disediakan, format ISO 8601 (yyyyMMddTHHmmssZ
) digunakan. Fungsi ini hanya dapat digunakan dalam nilai default untuk parameter.
Namespace: sys.
Parameter
Parameter | Wajib | Tipe | Deskripsi |
---|---|---|---|
format | No | string | Nilai yang dikodekan URI untuk dikonversi menjadi string. Gunakan untai (karakter) format standar atau untai (karakter) format kustom. |
Keterangan
Anda hanya bisa menggunakan fungsi ini dalam ekspresi untuk nilai default parameter. Menggunakan fungsi ini di tempat lain dalam file Bicep mengembalikan kesalahan. Fungsi ini tidak diizinkan di bagian lain file Bicep karena mengembalikan nilai yang berbeda setiap kali disebut. Menyebarkan file Bicep yang sama dengan parameter yang sama tidak akan menghasilkan hasil yang sama secara andal.
Jika Anda menggunakan opsi untuk putar kembali kesalahan yang berhasil disebar sebelumnya, dan menyertakan parameter yang menggunakan utcNow, parameter tidak dievaluasi ulang. Sebaliknya, nilai parameter dari penyebaran sebelumnya secara otomatis digunakan kembali dalam penyebaran putar kembali.
Hati-hati menyebar ulang file Bicep yang bergantung pada fungsi utcNow untuk nilai default. Ketika Anda menyebar ulang dan tidak memberikan nilai untuk parameter, fungsi tersebut dievaluasi kembali. Jika Anda ingin memperbarui sumber daya yang ada daripada membuat yang baru, berikan nilai parameter dari penyebaran sebelumnya.
Nilai hasil
Nilai tanggalwaktu UTC saat ini.
Contoh
Contoh berikut ini menampilkan format berbeda untuk nilai tanggalwaktu.
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
Keluaran dari contoh sebelumnya bervariasi untuk setiap penyebaran tetapi akan mirip dengan:
Nama | Jenis | Nilai |
---|---|---|
utcOutput | string | 20190305T175318Z |
utcShortOutput | string | 03/05/2019 |
utcCustomOutput | string | 3 5 |
Contoh berikutnya menampilkan cara menggunakan nilai dari fungsi saat mengatur nilai tag.
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
Langkah berikutnya
- Untuk deskripsi bagian-bagian dalam file Bicep, lihat Memahami struktur dan sintaks file Bicep.