Freigeben über


Datumsfunktionen für ARM-Vorlagen

In diesem Artikel werden die Funktionen zum Arbeiten mit Datumsangaben in Der Vorlage "Azure Resource Manager" (ARM-Vorlage) beschrieben.

Tipp

Bicep wird empfohlen, da sie die gleichen Funktionen wie ARM-Vorlagen bietet und die Syntax einfacher zu verwenden ist. Weitere Informationen finden Sie unter date Funktionen.

dateTimeAdd

dateTimeAdd(base, duration, [format])

Fügt einem Basiswert eine Zeitdauer hinzu. Das ISO 8601-Format wird erwartet.

Verwenden Sie in Bicep die dateTimeAdd Funktion.

Die Parameter

Parameter Erforderlich Typ BESCHREIBUNG
Basis Ja Schnur Der Anfangstermintimewert für die Addition. Verwenden Sie das ISO 8601-Zeitstempelformat.
duration Ja Schnur Der Zeitwert, der der Basis hinzugefügt werden soll. Dies kann ein negativer Wert sein. Verwenden Sie das ISO 8601-Dauerformat.
format Nein Schnur Das Ausgabeformat für das Datetime-Ergebnis. Wenn nicht angegeben, wird das Format des Basiswerts verwendet. Verwenden Sie entweder Standardformat - oder benutzerdefinierte Zeichenfolgen.

Rückgabewert

Der Datetime-Wert, der sich aus dem Hinzufügen des Dauerwerts zum Basiswert ergibt.

Bemerkungen

Die dateTimeAdd Funktion berücksichtigt keine Schaltjahre, und P1Y sollte als P365D interpretiert werden, während P1M als P30D interpretiert werden sollte. Der folgende JSON-Code zeigt einige Beispiele:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "addOneYearNonLeap": {
      "type": "string",
      "value": "[dateTimeAdd('2023-01-01 00:00:00Z', 'P1Y')]"  //2024-01-01T00:00:00Z
    },
    "addOneYearLeap": {
      "type": "string",
      "value": "[dateTimeAdd('2024-01-01 00:00:00Z', 'P1Y')]"  //2024-12-31T00:00:00Z
    },
    "addOneMonthNonLeap": {
      "type": "string",
      "value": "[dateTimeAdd('2023-02-01 00:00:00Z', 'P1M')]"  //2023-03-03T00:00:00Z
    },
    "addOneMonthLeap": {
      "type": "string",
      "value": "[dateTimeAdd('2024-02-01 00:00:00Z', 'P1M')]"  //2024-03-02T00:00:00Z
    }
  }
}

Im vorhergehenden Beispiel, wenn 2023 als Nicht-Schaltjahr betrachtet wird, ist das Ergebnis, ein Jahr zum ersten Tag des Jahres hinzuzufügen, 2024-01-01T00:00:00Z. Umgekehrt führt das Hinzufügen eines Jahres zum Starttag 2024, ein Schaltjahr, zu 2024-12-31T00:00:00Z, nicht 2025-01-01T00:00:00Z, da ein Schaltjahr 366 Tage statt 365 Tage umfasst. Darüber hinaus wird die Unterscheidung zwischen Schalt- und Nicht-Schaltjahren deutlich, wenn ein Monat zum ersten Tag des Februars hinzugefügt wird, was zu unterschiedlichen Tagesergebnissen führt.

Beispiele

Die folgende Beispielvorlage zeigt verschiedene Möglichkeiten zum Hinzufügen von Zeitwerten:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "baseTime": {
      "type": "string",
      "defaultValue": "[utcNow('u')]"
    }
  },
  "variables": {
    "add3Years": "[dateTimeAdd(parameters('baseTime'), 'P3Y')]",
    "subtract9Days": "[dateTimeAdd(parameters('baseTime'), '-P9D')]",
    "add1Hour": "[dateTimeAdd(parameters('baseTime'), 'PT1H')]"
  },
  "resources": [],
  "outputs": {
    "add3YearsOutput": {
      "value": "[variables('add3Years')]",
      "type": "string"
    },
    "subtract9DaysOutput": {
      "value": "[variables('subtract9Days')]",
      "type": "string"
    },
    "add1HourOutput": {
      "value": "[variables('add1Hour')]",
      "type": "string"
    }
  }
}

Wenn die vorherige Vorlage mit einer Basiszeit 2020-04-07 14:53:14Zbereitgestellt wird, lautet die Ausgabe:

Name Typ Wert
add3YearsOutput Schnur 14.04.2023 2:53:14 Uhr
subtrahieren9DaysOutput Schnur 29.03.2020 2:53:14 Uhr
add1HourOutput Schnur 14.04.2020 3:53:14 Uhr

Die nächste Beispielvorlage zeigt, wie die Startzeit für einen Automatisierungszeitplan festgelegt wird:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "omsAutomationAccountName": {
      "type": "string",
      "defaultValue": "demoAutomation",
      "metadata": {
        "description": "Use an existing Automation account."
      }
    },
    "scheduleName": {
      "type": "string",
      "defaultValue": "demoSchedule1",
      "metadata": {
        "description": "Name of the new schedule."
      }
    },
    "baseTime": {
      "type": "string",
      "defaultValue": "[utcNow('u')]",
      "metadata": {
        "description": "Schedule will start one hour from this time."
      }
    }
  },
  "variables": {
    "startTime": "[dateTimeAdd(parameters('baseTime'), 'PT1H')]"
  },
  "resources": [
    ...
    {
      "type": "Microsoft.Automation/automationAccounts/schedules",
      "apiVersion": "2024-10-23",
      "name": "[concat(parameters('omsAutomationAccountName'), '/', parameters('scheduleName'))]",

      "properties": {
        "description": "Demo Scheduler",
        "startTime": "[variables('startTime')]",
        "interval": 1,
        "frequency": "Hour"
      }
    }
  ],
  "outputs": {
  }
}

dateTimeFromEpoch

dateTimeFromEpoch(epochTime)

Wandelt einen Epochen-Ganzzahlwert in einen ISO 8601-Datetime-Wert um.

Verwenden Sie in Bicep die dateTimeFromEpoch Funktion.

Die Parameter

Parameter Erforderlich Typ BESCHREIBUNG
epochTime Ja INT Die Epoche, die in eine Datetime-Zeichenfolge konvertiert werden soll.

Rückgabewert

Eine ISO 8601-Datetime-Zeichenfolge.

Beispiel

Das folgende Beispiel zeigt Ausgabewerte für die epoch Zeitfunktionen:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "convertedEpoch": {
      "type": "int",
      "defaultValue": "[dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))]"
    }
  },
  "variables": {
    "convertedDatetime": "[dateTimeFromEpoch(parameters('convertedEpoch'))]"
  },
  "resources": [],
  "outputs": {
    "epochValue": {
      "type": "int",
      "value": "[parameters('convertedEpoch')]"
    },
    "datetimeValue": {
      "type": "string",
      "value": "[variables('convertedDatetime')]"
    }
  }
}

Die Ausgabe lautet:

Name Typ Wert
datetimeValue Schnur 2023-05-02T15:16:13Z
epochValue Integer 1683040573

dateTimeToEpoch

dateTimeToEpoch(dateTime)

Wandelt eine DATUMS-Zeichenfolge von ISO 8601 in einen ganzzahligen Wert der Epoche um.

Verwenden Sie in Bicep die dateTimeToEpoch Funktion.

Die Parameter

Parameter Erforderlich Typ BESCHREIBUNG
Datum und Uhrzeit Ja Schnur Die datetime-Zeichenfolge, die in eine Epochenzeit konvertiert werden soll.

Rückgabewert

Eine ganze Zahl, die die Anzahl der Sekunden von Mitternacht am 1. Januar 1970 darstellt.

Beispiele

Das folgende Beispiel zeigt Ausgabewerte für die epoch Zeitfunktionen:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "convertedEpoch": {
      "type": "int",
      "defaultValue": "[dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))]"
    }
  },
  "variables": {
    "convertedDatetime": "[dateTimeFromEpoch(parameters('convertedEpoch'))]"
  },
  "resources": [],
  "outputs": {
    "epochValue": {
      "type": "int",
      "value": "[parameters('convertedEpoch')]"
    },
    "datetimeValue": {
      "type": "string",
      "value": "[variables('convertedDatetime')]"
    }
  }
}

Die Ausgabe lautet:

Name Typ Wert
datetimeValue Schnur 2023-05-02T15:16:13Z
epochValue Integer 1683040573

Im nächsten Beispiel wird der Epochenzeitwert verwendet, um den Ablauf für einen Schlüssel in einem Schlüsseltresor festzulegen:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.5.6.12127",
      "templateHash": "16023511331197397029"
    }
  },
  "parameters": {
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The location into which the resources should be deployed."
      }
    },
    "tenantId": {
      "type": "string",
      "defaultValue": "[subscription().tenantId]",
      "metadata": {
        "description": "The Tenant Id that should be used throughout the deployment."
      }
    },
    "userAssignedIdentityName": {
      "type": "string",
      "metadata": {
        "description": "The name of the existing User Assigned Identity."
      }
    },
    "userAssignedIdentityResourceGroupName": {
      "type": "string",
      "metadata": {
        "description": "The name of the resource group for the User Assigned Identity."
      }
    },
    "keyVaultName": {
      "type": "string",
      "defaultValue": "[format('vault-{0}', uniqueString(resourceGroup().id))]",
      "metadata": {
        "description": "The name of the Key Vault."
      }
    },
    "keyVaultKeyName": {
      "type": "string",
      "defaultValue": "cmkey",
      "metadata": {
        "description": "Name of the key in the Key Vault"
      }
    },
    "keyExpiration": {
      "type": "int",
      "defaultValue": "[dateTimeToEpoch(dateTimeAdd(utcNow(), 'P1Y'))]",
      "metadata": {
        "description": "Expiration time of the key"
      }
    },
    "storageAccountName": {
      "type": "string",
      "defaultValue": "[format('storage{0}', uniqueString(resourceGroup().id))]",
      "metadata": {
        "description": "The name of the Storage Account"
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2021-10-01",
      "name": "[parameters('keyVaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "sku": {
          "name": "standard",
          "family": "A"
        },
        "enableSoftDelete": true,
        "enablePurgeProtection": true,
        "enabledForDiskEncryption": true,
        "tenantId": "[parameters('tenantId')]",
        "accessPolicies": [
          {
            "tenantId": "[parameters('tenantId')]",
            "permissions": {
              "keys": [
                "unwrapKey",
                "wrapKey",
                "get"
              ]
            },
            "objectId": "[reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('userAssignedIdentityResourceGroupName')), 'Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentityName')), '2018-11-30').principalId]"
          }
        ]
      }
    },
    {
      "type": "Microsoft.KeyVault/vaults/keys",
      "apiVersion": "2021-10-01",
      "name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('keyVaultKeyName'))]",
      "properties": {
        "attributes": {
          "enabled": true,
          "exp": "[parameters('keyExpiration')]"
        },
        "keySize": 4096,
        "kty": "RSA"
      },
      "dependsOn": [
        "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
      ]
    },
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
          "[format('{0}', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('userAssignedIdentityResourceGroupName')), 'Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentityName')))]": {}
        }
      },
      "properties": {
        "accessTier": "Hot",
        "supportsHttpsTrafficOnly": true,
        "minimumTlsVersion": "TLS1_2",
        "encryption": {
          "identity": {
            "userAssignedIdentity": "[extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, parameters('userAssignedIdentityResourceGroupName')), 'Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentityName'))]"
          },
          "services": {
            "blob": {
              "enabled": true
            }
          },
          "keySource": "Microsoft.Keyvault",
          "keyvaultproperties": {
            "keyname": "[parameters('keyVaultKeyName')]",
            "keyvaulturi": "[if(endsWith(reference(resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))).vaultUri, '/'), substring(reference(resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))).vaultUri, 0, sub(length(reference(resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))).vaultUri), 1)), reference(resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))).vaultUri)]"
          }
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]",
        "[resourceId('Microsoft.KeyVault/vaults/keys', parameters('keyVaultName'), parameters('keyVaultKeyName'))]"
      ]
    }
  ]
}

utcNow

utcNow(format)

Gibt den aktuellen Datumstimewert (UTC) im angegebenen Format zurück. Wenn kein Format bereitgestellt wird, wird das ISO 8601 (yyyyMMddTHHmmssZ)-Format verwendet. Diese Funktion kann nur für den Standardwert eines Parameters verwendet werden.

Verwenden Sie in Bicep die utcNow Funktion.

Die Parameter

Parameter Erforderlich Typ BESCHREIBUNG
format Nein Schnur Der als URI codierte Wert, der in eine Zeichenfolge konvertiert werden soll. Verwenden Sie entweder Standardformat- oder benutzerdefinierte Zeichenfolgen.

Bemerkungen

Sie können diese Funktion nur in einem Ausdruck für den Standardwert eines Parameters verwenden. Wenn diese Funktion an einer anderen Stelle in einer Vorlage verwendet wird, wird ein Fehler zurückgegeben. Die Funktion ist in anderen Teilen der Vorlage nicht zulässig, da bei jedem Aufruf ein anderer Wert zurückgegeben wird. Das Bereitstellen der gleichen Vorlage mit den gleichen Parametern würde nicht zuverlässig zu den gleichen Ergebnissen führen.

Wenn Sie die Option zum Rollback auf eine frühere erfolgreiche Bereitstellung verwenden, wenn die frühere Bereitstellung einen Parameter enthält, der verwendet utcNowwird, wird der Parameter nicht erneut ausgewertet. Stattdessen wird der Parameterwert der vorherigen Bereitstellung in der Rollbackbereitstellung automatisch wiederverwendet.

Achten Sie darauf, eine Vorlage erneut bereitzustellen, die auf der utcNow Funktion für einen Standardwert basiert. Wenn Sie die erneute Bereitstellung durchführen und keinen Wert für den Parameter bereitstellen, wird die Funktion erneut ausgewertet. Wenn Sie eine vorhandene Ressource aktualisieren möchten, anstatt eine neue zu erstellen, übergeben Sie den Parameterwert aus der früheren Bereitstellung.

Rückgabewert

Der aktuelle UTC-Datumstimewert .

Beispiele

Die folgende Beispielvorlage zeigt unterschiedliche Formate für den Datetime-Wert:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "utcValue": {
      "type": "string",
      "defaultValue": "[utcNow()]"
    },
    "utcShortValue": {
      "type": "string",
      "defaultValue": "[utcNow('d')]"
    },
    "utcCustomValue": {
      "type": "string",
      "defaultValue": "[utcNow('M d')]"
    }
  },
  "resources": [
  ],
  "outputs": {
    "utcOutput": {
      "type": "string",
      "value": "[parameters('utcValue')]"
    },
    "utcShortOutput": {
      "type": "string",
      "value": "[parameters('utcShortValue')]"
    },
    "utcCustomOutput": {
      "type": "string",
      "value": "[parameters('utcCustomValue')]"
    }
  }
}

Die Ausgabe des vorherigen Beispiels variiert bei jeder Bereitstellung. Sie sollte jedoch folgender ähneln:

Name Typ Wert
utcOutput Schnur 20190305T175318Z
utcShortOutput Schnur 03/05/2019
utcCustomOutput Schnur 3 5

Das nächste Beispiel zeigt, wie Sie einen Wert aus der Funktion verwenden, wenn Sie einen Tagwert festlegen:

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "utcShort": {
      "type": "string",
      "defaultValue": "[utcNow('d')]"
    },
    "rgName": {
      "type": "string"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Resources/resourceGroups",
      "apiVersion": "2025-04-01",
      "name": "[parameters('rgName')]",
      "location": "westeurope",
      "tags": {
        "createdDate": "[parameters('utcShort')]"
      },
      "properties": {}
    }
  ],
  "outputs": {
    "utcShortOutput": {
      "type": "string",
      "value": "[parameters('utcShort')]"
    }
  }
}

Nächste Schritte

Weitere Informationen zu den Abschnitten in einer ARM-Vorlage finden Sie in der Struktur und Syntax von ARM-Vorlagen.