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 Diperlukan Jenis Deskripsi
basis 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 Tidak 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 kembali

Nilai tanggalwaktu yang hasil dari menambahkan nilai durasi ke nilai dasar.

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 Untai 4/7/2023 14:53:14 WIB
subtract9DaysOutput Untai 3/29/2020 14:53:14 WIB
add1HourOutput Untai 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@2015-10-31' = {
  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 Diperlukan Jenis Deskripsi
epochTime Ya int Waktu epoch untuk mengonversi ke string tanggalwaktu.

Mengembalikan nilai

String tanggalwaktu ISO 8601.

Keterangan

Fungsi ini memerlukan Bicep versi 0.5.6 atau yang lebih baru.

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 Diperlukan Jenis Deskripsi
dateTime Ya string String tanggalwaktu untuk dikonversi ke waktu epoch.

Mengembalikan nilai

Bilangan bulat yang mewakili jumlah detik dari tengah malam pada 1 Januari 1970.

Keterangan

Fungsi ini memerlukan Bicep versi 0.5.6 atau yang lebih baru.

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 Diperlukan Jenis Deskripsi
format Tidak string Nilai yang dikodekan URI untuk dikonversi menjadi untai (karakter). Gunakan untai (karakter) format standar atau untai (karakter) format kustom.

Keterangan

Anda hanya dapat 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 dengan andal menghasilkan hasil sama.

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 sumber daya baru, berikan nilai parameter dari penyebaran sebelumnya.

Nilai kembali

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

Output 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@2020-10-01' = {
  name: rgName
  location: 'westeurope'
  tags: {
    createdDate: utcShort
  }
}

output utcShortOutput string = utcShort

Langkah berikutnya