Time Zones and German Date Format in Power Automate
Power Automate showing UTC times in US format? Here's how to convert to the German dd.MM.yyyy format using convertTimeZone and formatDateTime.
Anyone who has ever sent an email with an appointment in Power Automate knows the problem: the flow shows a time that is several hours off from the actual German local time, and the date appears in American format, month before day instead of day before month. This happens because Power Automate internally calculates by default in Coordinated Universal Time (UTC), and many connectors pass timestamps through in ISO 8601 format without any time zone conversion.
For recipients in Germany, Austria, or Switzerland, this quickly leads to misunderstandings, for example when January 3rd turns into an apparent March 1st due to the wrong order. The two expression functions `formatDateTime` and `convertTimeZone` solve this reliably, without any extra connector or third-party tool. This article shows step by step how to convert timestamps into German time zones and output them in the familiar dd.MM.yyyy format.
Why does Power Automate return UTC times in US format?
Power Automate uses, according to the official documentation on date and time values, Coordinated Universal Time (UTC) by default. A timestamp ending in "Z", such as `2026-07-20T09:30:00Z`, is already a reliable indicator of UTC. Since different connectors also output different date formats, it can happen that the same flow produces different display formats depending on the service used. So before formatting or converting, it's worth taking a look at the raw output: run the flow once and check in the run history which format and time zone the respective step actually returns the value in.
formatDateTime: bringing the date into German format
The `formatDateTime()` function takes two parameters: the timestamp and a format string. With manual input, the timestamp must follow the ISO 8601 format; dynamic content from previous steps works without additional quotation marks. There are two variants for the format string:
- Standard format strings consist of a single letter, such as `g` for the general short format or `D` for the long written-out date. They follow the flow's locale, usually English (USA), and therefore often produce a format like "6/15/2009 1:45 PM".
- Custom format strings consist of more than one character and give you full control over order and presentation. For the familiar German format, an expression like this is enough:
`formatDateTime(utcNow(), 'dd.MM.yyyy HH:mm')`
This expression returns, for example, "20.07.2026 09:30" instead of the American notation. For a plain date without a time, `formatDateTime(utcNow(), 'dd.MM.yyyy')` is enough.
convertTimeZone: converting UTC to German local time
A correct format alone is not enough if the underlying time is still in UTC. For this, according to the guide on converting a time zone, Power Automate provides both a graphical action called "Convert time zone" and the expression function `convertTimeZone`. The function expects four parameters: the timestamp, the source time zone, the target time zone, and optionally a format string.
Important: Power Automate uses Windows time zone names for the time zones, not the IANA names common in other systems, such as "Europe/Berlin". For Germany, Austria, and most of Switzerland, the correct value is `W. Europe Standard Time`. Combined with `formatDateTime`, you get the complete expression to output the current time in German local time and German format:
`formatDateTime(convertTimeZone(utcNow(), 'UTC', 'W. Europe Standard Time'), 'dd.MM.yyyy HH:mm')`
Automatically accounting for daylight saving time
One advantage of the Windows time zone names: `W. Europe Standard Time` knows the automatic switch between standard time and daylight saving time. So you don't need to check yourself whether UTC+1 or UTC+2 currently applies; the conversion adjusts automatically to the date. If you instead want to convert a timestamp directly to or from UTC without specifying a second time zone, the related functions `convertToUtc` and `convertFromUtc`, described in the same reference guide, are useful.
Working without an expression: formatting data by examples
If you don't want to memorize the syntax, you can alternatively use the Format data by examples feature. In the expression menu of any text field, select the corresponding menu item, provide an example of the original value and an example of the desired target format, and Power Automate automatically suggests the matching expression. This feature is particularly suited to one-off formatting where writing a manual expression isn't worth the effort. However, it doesn't work for arrays or nested structures; here `formatDateTime` remains the more reliable choice.
Practical example: sending a SharePoint appointment in German time
A typical scenario: a SharePoint list provides a start date in UTC format, and the flow should send an easily readable German appointment date by email. In the text field of the email action, you simply write "The appointment takes place on" as plain text, insert the following expression as dynamic content at the desired position, and then add the word "o'clock":
`formatDateTime(convertTimeZone(triggerBody()?['Startzeit'], 'UTC', 'W. Europe Standard Time'), 'dd.MM.yyyy HH:mm')`
This way you combine both functions into a single expression: `convertTimeZone` first converts the local time, then `formatDateTime` puts it into the desired German format. If you need such expressions regularly across multiple flows, it's best to move the formatting logic into a reusable child flow action, so it only needs to be maintained in one place.
If your flows regularly struggle with time zones, formats, or other pitfalls, Power Automate Consulting by NordFlux can help you build robust, maintainable automations. You retain full control over every expression, because the logic stays clearly documented instead of disappearing into countless individual flows.
Frequently asked questions
Why does Power Automate show dates in the format M/dd/yyyy instead of the German dd.MM.yyyy?
The standard format strings of `formatDateTime`, such as `g` or `D`, follow the flow's locale, which is usually English (USA). To force the German format, use a custom format string like `dd.MM.yyyy HH:mm` instead of the standard format string.
Which time zone name do I use for Germany in convertTimeZone?
Power Automate uses Windows time zone names, not IANA names. For Germany, Austria, and most of Switzerland, the correct value is `W. Europe Standard Time`.
Do I need to account for daylight saving time myself?
No. The `W. Europe Standard Time` time zone automatically handles the switch between standard time and daylight saving time based on the respective date; no manual distinction between UTC+1 and UTC+2 is necessary.
What does the "Z" at the end of a timestamp mean?
A timestamp ending in "Z", such as `2026-07-20T09:30:00Z`, is in Coordinated Universal Time (UTC). The "Z" stands for "Zulu time" and is a reliable indicator to check before performing a time zone conversion with `convertTimeZone`.
Can I generate the German date format without writing my own expression?
Yes, via the "Format data by examples" feature in the expression menu. You provide an example of the source value and an example of the desired result, and Power Automate automatically suggests the matching `formatDateTime` expression.
NordFlux UG (haftungsbeschränkt)
NordFlux builds digital employees for organisations: automations and AI agents that take over repetitive work. You stay in control.
Concrete questions about automation or AI?
In a free initial analysis we discuss your case directly. No strings attached.