Time Zone Selector
A dropdown of all ~590 IANA time zones grouped by region (Africa, America, Asia, etc.). Displays the UTC offset alongside each zone name so editors can find the right zone quickly. Can return the IANA string, the UTC offset, or a full object.
Pro field
Time Zone Selector requires the Extra Fields for ACF Pro license.
Settings
| Setting | Default | Description |
|---|---|---|
| Default Timezone | (empty) | IANA timezone pre-selected when the field loads, e.g. Asia/Dhaka. |
| Show UTC Offset | true | Display the UTC offset beside each timezone name in the dropdown. |
| Filter Region | (none) | Limit the dropdown to zones from one region: Africa, America, Asia, Atlantic, Australia, Europe, Pacific, or UTC. |
| Return Format | iana | iana · offset · object |
Return values
return_format: 'iana'
Returns the IANA timezone identifier string.
$tz = get_field('user_timezone');
// "Asia/Dhaka"
// "America/New_York"
// "Europe/London"
return_format: 'offset'
Returns the UTC offset string.
$offset = get_field('event_timezone');
// "+06:00"
// "-05:00"
// "+00:00"
return_format: 'object'
Returns an associative array with iana, offset, and label.
$tz = get_field('event_timezone');
// [
// 'iana' => 'America/New_York',
// 'offset' => '-05:00',
// 'label' => 'America/New_York (UTC-05:00)',
// ]
Usage
Converting a stored date to the user’s timezone
$iana_tz = get_field('event_timezone'); // "America/New_York"
$event_time = get_field('event_datetime'); // "2026-06-15 14:30:00" (stored as UTC)
if ($iana_tz && $event_time) {
$dt = new DateTime($event_time, new DateTimeZone('UTC'));
$dt->setTimezone(new DateTimeZone($iana_tz));
echo '<time datetime="' . esc_attr($dt->format('c')) . '">';
echo esc_html($dt->format('F j, Y g:i A T'));
echo '</time>';
// "June 15, 2026 10:30 AM EDT"
}
Displaying the offset
$offset = get_field('branch_timezone'); // return_format: 'offset'
if ($offset) {
echo '<p>Local time zone: UTC' . esc_html($offset) . '</p>';
}
Scheduling a cron in the user’s timezone
$iana_tz = get_field('notification_timezone', $user_id);
if ($iana_tz) {
$tz = new DateTimeZone($iana_tz);
$dt = new DateTime('09:00', $tz); // 9 AM local
$dt->setTimezone(new DateTimeZone('UTC'));
// Schedule event at the UTC equivalent
wp_schedule_event($dt->getTimestamp(), 'daily', 'send_daily_digest');
}
Listing all upcoming events in the viewer’s local time
$viewer_tz = get_field('timezone', get_current_user_id()) ?: 'UTC';
$events = get_posts(['post_type' => 'event', 'posts_per_page' => 10]);
foreach ($events as $event) {
$utc_time = get_field('event_time', $event->ID);
if (!$utc_time) continue;
$dt = new DateTime($utc_time, new DateTimeZone('UTC'));
$dt->setTimezone(new DateTimeZone($viewer_tz));
echo esc_html($event->post_title . ' — ' . $dt->format('D g:i A'));
}