List.DateTimeZones
ListGenerates a list of datetimezone values starting from a given datetimezone, with a specified count and step duration.
Syntax
List.DateTimeZones(start as datetimezone, count as number, step as duration) as listParameters
| Name | Type | Required | Description |
|---|---|---|---|
start | datetimezone | Yes | The starting datetimezone value. |
count | number | Yes | The number of datetimezone values to generate. |
step | duration | Yes | The duration to add between each successive datetimezone value. |
Return Value
list — A list of datetimezone values of length count, beginning at start and incrementing by step.
Remarks
List.DateTimeZones generates a sequence of datetimezone values — each carrying both a datetime and a UTC offset. This is the right choice when your data sources or reporting requirements are timezone-aware, such as when ingesting API data stamped with timezone offsets.
The timezone offset from the start value is preserved in all generated values; the offset does not change across the sequence. Use DateTimeZone.ToLocal or DateTimeZone.ToUtc to convert individual values, or apply these functions via List.Transform to convert the entire sequence.
The step parameter uses #duration(days, hours, minutes, seconds) syntax. A count of 0 returns an empty list. Prefer List.DateTimes if timezone information is not needed, as datetimezone values carry additional overhead and may require conversion before use in DAX or other downstream tools that do not support the type natively.
Examples
Example 1: Generate hourly timezone-aware datetimes (UTC+5:30)
List.DateTimeZones(#datetimezone(2024, 1, 1, 0, 0, 0, 5, 30), 4, #duration(0, 1, 0, 0))Result | |
|---|---|
| 1 | 12/31/2023 6:30:00 PM |
| 2 | 12/31/2023 7:30:00 PM |
| 3 | 12/31/2023 8:30:00 PM |
| 4 | 12/31/2023 9:30:00 PM |
Example 2: Generate daily UTC timestamps
List.DateTimeZones(#datetimezone(2024, 6, 1, 0, 0, 0, 0, 0), 5, #duration(1, 0, 0, 0))Result | |
|---|---|
| 1 | 6/1/2024 12:00:00 AM |
| 2 | 6/2/2024 12:00:00 AM |
| 3 | 6/3/2024 12:00:00 AM |
| 4 | 6/4/2024 12:00:00 AM |
| 5 | 6/5/2024 12:00:00 AM |
Example 3: Convert a generated sequence to UTC
let
EasternTimes = List.DateTimeZones(
#datetimezone(2024, 3, 1, 9, 0, 0, -5, 0),
3,
#duration(1, 0, 0, 0)
),
AsUtc = List.Transform(EasternTimes, DateTimeZone.ToUtc),
AsTable = Table.FromList(AsUtc, Splitter.SplitByNothing(), {"UTC Timestamp"})
in
AsTableThe final output — converts the UTC datetimezone list into a single-column table labeled UTC Timestamp.
UTC Timestamp | |
|---|---|
| 1 | 3/1/2024 2:00:00 PM |
| 2 | 3/2/2024 2:00:00 PM |
| 3 | 3/3/2024 2:00:00 PM |