Funkcje daty dla szablonów ARMDate functions for ARM templates

Menedżer zasobów udostępnia następujące funkcje do pracy z datami w szablonie Azure Resource Manager (szablon ARM):Resource Manager provides the following functions for working with dates in your Azure Resource Manager template (ARM template):

Uwaga

Ten artykuł zawiera przykłady Bicep.This article contains Bicep examples. Bicep jest obecnie w wersji zapoznawczej.Bicep is currently in preview. Aby uzyskać więcej informacji, zobacz Bicep Overview (przegląd).For more information, see Bicep overview.

dateTimeAdddateTimeAdd

dateTimeAdd(base, duration, [format])

Dodaje czas trwania do wartości podstawowej.Adds a time duration to a base value. Oczekiwano formatu ISO 8601.ISO 8601 format is expected.

ParametryParameters

ParametrParameter WymaganeRequired TypType OpisDescription
basebase TakYes ciągstring Wartość daty i godziny dla dodania.The starting datetime value for the addition. Użyj formatu znacznika czasu ISO 8601.Use ISO 8601 timestamp format.
czas trwaniaduration TakYes ciągstring Wartość czasu, która ma zostać dodana do bazy.The time value to add to the base. Może być wartością ujemną.It can be a negative value. Użyj formatu czasu trwania ISO 8601.Use ISO 8601 duration format.
formatformat NieNo ciągstring Format danych wyjściowych dla wyniku daty i godziny.The output format for the date time result. Jeśli nie zostanie podany, zostanie użyty format wartości podstawowej.If not provided, the format of the base value is used. Użyj standardowych ciągów formatu lub niestandardowych ciągów formatu.Use either standard format strings or custom format strings.

Wartość zwracanaReturn value

Wartość daty/godziny, która wynika z dodania wartości czasu trwania do wartości podstawowej.The datetime value that results from adding the duration value to the base value.

PrzykładyExamples

Poniższy przykładowy szablon pokazuje różne sposoby dodawania wartości czasu.The following example template shows different ways of adding time values.

{
  "$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"
    },
  }
}

Gdy poprzedni szablon zostanie wdrożony z czasem podstawowym programu 2020-04-07 14:53:14Z , dane wyjściowe są następujące:When the preceding template is deployed with a base time of 2020-04-07 14:53:14Z, the output is:

NazwaName TypType WartośćValue
add3YearsOutputadd3YearsOutput CiągString 4/7/2023 2:53:14 PM4/7/2023 2:53:14 PM
subtract9DaysOutputsubtract9DaysOutput CiągString 3/29/2020 2:53:14 PM3/29/2020 2:53:14 PM
add1HourOutputadd1HourOutput CiągString 4/7/2020 3:53:14 PM4/7/2020 3:53:14 PM

Następny przykładowy szablon pokazuje, jak ustawić godzinę rozpoczęcia harmonogramu automatyzacji.The next example template shows how to set the start time for an Automation schedule.

{
  "$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": "2015-10-31",
      "name": "[concat(parameters('omsAutomationAccountName'), '/', parameters('scheduleName'))]",

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

utcNowutcNow

utcNow(format)

Zwraca bieżącą wartość daty/godziny w określonym formacie.Returns the current (UTC) datetime value in the specified format. Jeśli format nie jest podany, yyyyMMddTHHmmssZ używany jest format ISO 8601 ().If no format is provided, the ISO 8601 (yyyyMMddTHHmmssZ) format is used. Tej funkcji można użyć tylko w wartości domyślnej dla parametru.This function can only be used in the default value for a parameter.

ParametryParameters

ParametrParameter WymaganeRequired TypType OpisDescription
formatformat NieNo ciągstring Zakodowana wartość identyfikatora URI w celu przekonwertowania na ciąg.The URI encoded value to convert to a string. Użyj standardowych ciągów formatu lub niestandardowych ciągów formatu.Use either standard format strings or custom format strings.

UwagiRemarks

Tej funkcji można użyć tylko w wyrażeniu dla wartości domyślnej parametru.You can only use this function within an expression for the default value of a parameter. Użycie tej funkcji w dowolnym miejscu w szablonie powoduje zwrócenie błędu.Using this function anywhere else in a template returns an error. Funkcja nie jest dozwolona w innych częściach szablonu, ponieważ zwraca inną wartość za każdym razem, gdy jest wywoływana.The function isn't allowed in other parts of the template because it returns a different value each time it's called. Wdrożenie tego samego szablonu z tymi samymi parametrami nie da niezawodnego wygenerowania tych samych wyników.Deploying the same template with the same parameters wouldn't reliably produce the same results.

W przypadku użycia opcji Wycofaj przy błędzie do wcześniejszego pomyślnego wdrożenia, a wcześniejsze wdrożenie zawiera parametr, który używa UtcNow, parametr nie jest ponownie obliczany.If you use the option to rollback on error to an earlier successful deployment, and the earlier deployment includes a parameter that uses utcNow, the parameter isn't reevaluated. Zamiast tego wartość parametru z wcześniejszego wdrożenia zostanie automatycznie ponownie użyta w ramach wdrożenia wycofywania.Instead, the parameter value from the earlier deployment is automatically reused in the rollback deployment.

Należy zachować ostrożność wdrażania szablonu, który opiera się na funkcji utcNow dla wartości domyślnej.Be careful redeploying a template that relies on the utcNow function for a default value. Po ponownym wdrożeniu i niepodaniu wartości parametru funkcja jest ponownie Szacowana.When you redeploy and don't provide a value for the parameter, the function is reevaluated. Jeśli chcesz zaktualizować istniejący zasób zamiast tworzyć nowe, przekaż wartość parametru z wcześniejszego wdrożenia.If you want to update an existing resource rather than create a new one, pass in the parameter value from the earlier deployment.

Wartość zwracanaReturn value

Bieżąca wartość DateTime czasu UTC.The current UTC datetime value.

PrzykładyExamples

Poniższy przykładowy szablon pokazuje różne formaty wartości daty i godziny.The following example template shows different formats for the datetime value.

{
  "$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')]"
    }
  }
}

Dane wyjściowe z powyższego przykładu różnią się w zależności od wdrożenia, ale będą podobne do następujących:The output from the preceding example varies for each deployment but will be similar to:

NazwaName TypType WartośćValue
utcOutpututcOutput ciągstring 20190305T175318Z20190305T175318Z
utcShortOutpututcShortOutput ciągstring 03/05/201903/05/2019
utcCustomOutpututcCustomOutput ciągstring 3 53 5

W następnym przykładzie pokazano, jak używać wartości z funkcji podczas ustawiania wartości tagu.The next example shows how to use a value from the function when setting a tag value.

{
  "$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": "2020-10-01",
      "name": "[parameters('rgName')]",
      "location": "westeurope",
      "tags": {
        "createdDate": "[parameters('utcShort')]"
      },
      "properties": {}
    }
  ],
  "outputs": {
    "utcShortOutput": {
      "type": "string",
      "value": "[parameters('utcShort')]"
    }
  }
}

Następne krokiNext steps