Skip to main content

How to Convert UTC to Local Time in Power Automate with convertFromUtc

· 6 min read
Jagdish Kumawat
Founder @ Dewiride

SharePoint gives a flow its date and time columns in UTC. convertFromUtc() converts a UTC time to a time zone's local time and formats it in the same step: convertFromUtc(time, 'GMT Standard Time', 'dddd dd/MM/yyyy') gave Saturday 07/11/2026.

Microsoft's functions reference says it will Convert a timestamp from Universal Time Coordinated (UTC) to the target time zone. The time zone is a name: For time zone names, review Microsoft Windows Default Time Zones.

The example is the approval flow of the Overtime Timesheet app, which shows each shift's date and times to the approver in UK time.

Prerequisites​

Step 1: Keep the Time Zone in One Place​

The flow converts several times, so the time zone's name is in a Compose action named Time zone (How to Use the Compose Action in Power Automate):

The Time zone pane with Inputs set to GMT Standard Time

Every conversion reads it with outputs('Time_zone'), so a flow for another country changes one value.

Step 2: Convert and Format the Date​

A Compose named Shift date holds the shift's date, with the day's name:

Shift date → Inputs
convertFromUtc(triggerOutputs()?['body/StartTime'], outputs('Time_zone'), 'dddd dd/MM/yyyy')

The Shift date pane with Inputs set to a convertFromUtc(...) token and the expression editor beside it showing convertFromUtc(triggerOutputs()?['body/StartTime'], outputs('Time_zone'), 'dddd dd/MM/yyyy')

  • The first argument is the UTC time.
  • The second is the time zone's name.
  • The third is the format: dddd is the day's name, dd/MM/yyyy the UK date. Without it, the result is a full timestamp, without the timezone UTC offset, as the reference says.

Step 3: Convert the Times​

Shift times puts the start and finish together, as HH:mm, the 24-hour clock, and adds the next day when the shift ends on a later date than it starts:

Shift times → Inputs
concat(convertFromUtc(triggerOutputs()?['body/StartTime'], outputs('Time_zone'), 'HH:mm'), ' to ', convertFromUtc(triggerOutputs()?['body/EndTime'], outputs('Time_zone'), 'HH:mm'), if(equals(convertFromUtc(triggerOutputs()?['body/StartTime'], outputs('Time_zone'), 'yyyy-MM-dd'), convertFromUtc(triggerOutputs()?['body/EndTime'], outputs('Time_zone'), 'yyyy-MM-dd')), '', ' the next day'))
  • The first two convertFromUtc() calls give the start and finish as HH:mm, with ' to ' between them.
  • The if() compares the start and finish dates, converted with 'yyyy-MM-dd', and adds ' the next day' when they differ (How to Use the if() Function in Power Automate).
  • concat() joins the parts into one piece of text.

The Shift times pane with Inputs set to a concat(...) token and the expression editor beside it showing the whole concat expression with its convertFromUtc, if and equals parts

The dates are compared in local time, so a shift that ends after midnight in the UK is the next day, whatever UTC says.

The Result​

For Maya Patel's shift on Saturday 7 November 2026, from 08:00 to 12:00, the run's outputs were:

The run's Shift date: Inputs and Outputs both Saturday 07/11/2026

The run's Shift times: Inputs and Outputs both 08:00 to 12:00

In November, UK time is the same as UTC, so these times read the same before and after the conversion. From the last Sunday of March to the last Sunday of October, UK clocks are an hour ahead of UTC, and that's the change a time zone name is for, unlike a fixed offset. All the shifts that went through the flow so far were in November.

Common Mistakes​

MistakeWhat happensDo this instead
Showing SharePoint's time as it isUTC, an hour off in the UK summerconvertFromUtc() to the local time zone
'GMT' or 'UTC+1' as the time zoneNot a Windows time zone name'GMT Standard Time'
hh:mm12-hour clock without AM or PMHH:mm
mm for the monthmm is minutesMM

Troubleshooting​

SymptomLikely causeFix
The run fails on the time zoneThe name isn't a Windows time zoneCopy it from Microsoft's list
A long timestamp instead of a dateNo format argumentAdd 'dd/MM/yyyy'
Times an hour off in summerThe time wasn't convertedUse convertFromUtc()
the next day missing on a night shiftDates compared in UTCCompare the converted dates

FAQ​

What about converting the other way?​

convertToUtc() turns a local time into UTC, for writing a time back to SharePoint.

Why not formatDateTime()?​

formatDateTime() formats a time without changing its time zone, so a UTC time stays UTC. convertFromUtc() converts and formats together.

Conclusion​

convertFromUtc(utcTime, 'GMT Standard Time', 'dddd dd/MM/yyyy') turns SharePoint's UTC time into UK local time, formatted for people. Keep the time zone in one place, use HH:mm for times, and compare dates after converting them.

Additional Resources​