Часовые пояса и немецкий формат даты в Power Automate
Power Automate показывает время UTC в американском формате? Вот как преобразовать его в немецкий формат dd.MM.yyyy с помощью convertTimeZone и formatDateTime.
Каждый, кто хоть раз отправлял из Power Automate письмо с указанием даты встречи, знаком с этой проблемой: поток показывает время, которое отличается на несколько часов от реального немецкого местного времени, а дата отображается в американском формате — месяц перед днём вместо дня перед месяцем. Причина в том, что Power Automate по умолчанию внутренне рассчитывает время по всемирному координированному времени UTC, а многие коннекторы передают временные метки в формате ISO 8601 без преобразования часового пояса.
Для получателей в Германии, Австрии или Швейцарии это быстро приводит к недоразумениям — например, когда из-за неправильного порядка 3 января превращается в мнимое 1 марта. Две функции выражений, `formatDateTime` и `convertTimeZone`, позволяют надёжно решить эту проблему без дополнительного коннектора или стороннего инструмента. В этой статье пошагово показано, как преобразовать временные метки в немецкий часовой пояс и вывести их в привычном формате dd.MM.yyyy.
Почему Power Automate выдаёт время UTC в американском формате?
Power Automate, согласно официальной документации по значениям даты и времени, по умолчанию использует всемирное координированное время UTC. Временная метка, заканчивающаяся на «Z», например `2026-07-20T09:30:00Z`, уже является надёжным признаком UTC. Поскольку разные коннекторы к тому же выдают разные форматы дат, может случиться, что один и тот же поток выдаёт разные форматы отображения в зависимости от используемой службы. Поэтому перед форматированием или преобразованием стоит взглянуть на необработанный вывод: запустите поток один раз и проверьте в журнале выполнения, в каком формате и в каком часовом поясе конкретный шаг фактически возвращает значение.
formatDateTime: приведение даты к немецкому формату
Функция `formatDateTime()` принимает два параметра: временную метку и строку формата. При ручном вводе временная метка должна соответствовать формату ISO 8601, а динамическое содержимое из предыдущих шагов работает без дополнительных кавычек. Для строки формата существует два варианта:
- Стандартные строки формата состоят из одной буквы, например `g` для общего краткого формата или `D` для полной развёрнутой даты. Они ориентируются на региональные настройки потока, обычно английский (США), и поэтому часто дают формат вида «6/15/2009 1:45 PM».
- Пользовательские строки формата состоят из нескольких символов и дают полный контроль над порядком и оформлением. Для привычного немецкого формата достаточно такого выражения:
`formatDateTime(utcNow(), 'dd.MM.yyyy HH:mm')`
Это выражение возвращает, например, «20.07.2026 09:30» вместо американской записи. Для обычной даты без времени достаточно `formatDateTime(utcNow(), 'dd.MM.yyyy')`.
convertTimeZone: преобразование UTC в немецкое местное время
Правильного формата недостаточно, если исходное время всё ещё указано в UTC. Для этого, согласно руководству по преобразованию часового пояса, в Power Automate предусмотрены как графическое действие «Преобразовать часовой пояс», так и функция выражения `convertTimeZone`. Функция принимает четыре параметра: временную метку, исходный часовой пояс, целевой часовой пояс и, необязательно, строку формата.
Важно: для названий часовых поясов Power Automate использует обозначения Windows, а не привычные в других системах имена IANA, такие как «Europe/Berlin». Для Германии, Австрии и большей части Швейцарии правильное значение — `W. Europe Standard Time`. В сочетании с `formatDateTime` получается полное выражение для вывода текущего времени в немецком местном времени и немецком формате:
`formatDateTime(convertTimeZone(utcNow(), 'UTC', 'W. Europe Standard Time'), 'dd.MM.yyyy HH:mm')`
Автоматический учёт летнего времени
Преимущество названий часовых поясов Windows: `W. Europe Standard Time` знает об автоматическом переходе между зимним и летним временем. Поэтому вам не нужно самостоятельно проверять, действует ли сейчас UTC+1 или UTC+2 — преобразование автоматически подстраивается под дату. Если же вы хотите преобразовать временную метку напрямую в UTC или из UTC, не указывая второй часовой пояс, пригодятся связанные функции `convertToUtc` и `convertFromUtc`, описанные в том же справочном руководстве.
Работа без выражений: форматирование данных по примерам
Если вы не хотите запоминать синтаксис, вместо этого можно воспользоваться функцией Форматирование данных по примерам. В меню выражений любого текстового поля выберите соответствующий пункт меню, укажите пример исходного значения и пример желаемого целевого формата, и Power Automate автоматически предложит подходящее выражение. Эта функция особенно подходит для разовых форматирований, где не стоит тратить усилия на написание выражения вручную. Однако для массивов или вложенных структур она не работает — здесь `formatDateTime` остаётся более надёжным выбором.
Практический пример: отправка встречи из SharePoint по немецкому времени
Типичный сценарий: список SharePoint предоставляет дату начала в формате UTC, и поток должен отправить по электронной почте удобочитаемое указание даты встречи на немецком языке. В текстовом поле действия отправки письма вы просто пишете «Встреча состоится» как обычный текст, вставляете в нужном месте следующее выражение в качестве динамического содержимого и затем добавляете слово «часов»:
`formatDateTime(convertTimeZone(triggerBody()?['Startzeit'], 'UTC', 'W. Europe Standard Time'), 'dd.MM.yyyy HH:mm')`
Так вы объединяете обе функции в одно выражение: `convertTimeZone` сначала преобразует местное время, а затем `formatDateTime` приводит его к нужному немецкому формату. Если такие выражения регулярно нужны вам в нескольких потоках, лучше всего вынести логику форматирования в переиспользуемое действие дочернего потока, чтобы поддерживать её только в одном месте.
Если ваши потоки регулярно сталкиваются с проблемами часовых поясов, форматов или другими подводными камнями, консультации по Power Automate от NordFlux помогут вам создавать надёжные, удобные в обслуживании автоматизации. При этом вы сохраняете полный контроль над каждым выражением, поскольку логика остаётся понятно задокументированной, а не теряется в бесчисленных отдельных потоках.
Часто задаваемые вопросы
Почему Power Automate показывает даты в формате M/dd/yyyy вместо немецкого dd.MM.yyyy?
Стандартные строки формата функции `formatDateTime`, например `g` или `D`, ориентируются на региональные настройки потока, которые обычно соответствуют английскому (США). Чтобы принудительно задать немецкий формат, используйте вместо стандартной строки формата пользовательскую строку формата, например `dd.MM.yyyy HH:mm`.
Какое название часового пояса использовать для Германии в convertTimeZone?
Power Automate использует названия часовых поясов Windows, а не обозначения IANA. Для Германии, Австрии и большей части Швейцарии правильное значение — `W. Europe Standard Time`.
Нужно ли самостоятельно учитывать переход на летнее время?
Нет. Часовой пояс `W. Europe Standard Time` автоматически регулирует переход между зимним и летним временем в зависимости от даты; вручную различать UTC+1 и UTC+2 не требуется.
Что означает «Z» в конце временной метки?
Временная метка, заканчивающаяся на «Z», например `2026-07-20T09:30:00Z`, указана во всемирном координированном времени UTC. «Z» означает «зулу-время» и является надёжным признаком, который стоит проверить перед выполнением преобразования часового пояса с помощью `convertTimeZone`.
Можно ли получить немецкий формат даты без написания собственного выражения?
Да, с помощью функции «Форматирование данных по примерам» в меню выражений. Вы указываете пример исходного значения и пример желаемого результата, а Power Automate автоматически предлагает подходящее выражение `formatDateTime`.
NordFlux UG (haftungsbeschränkt)
NordFlux создаёт цифровых сотрудников для организаций: автоматизации и КИ-агентов, которые берут на себя повторяющуюся работу. Вы сохраняете контроль.
Конкретные вопросы по автоматизации или КИ?
В рамках бесплатного первичного анализа мы напрямую обсудим Ваш случай. Без обязательств.