DateTime Picker

A combined date and time picker built on Flatpickr. Captures a full date-time value in a single field. Configurable date format, 12h/24h clock, minute increment, and optional min/max constraints.

Pro field

DateTime Picker requires the Extra Fields for ACF Pro license.

Settings

SettingDefaultOptionsDescription
Date FormatY-m-dAny PHP date formatControls how the date portion appears in the admin UI.
Time Format24h24h · 12hClock format in the time picker. 12h shows AM/PM.
Minute Step51 · 5 · 10 · 15 · 30Increment between selectable minutes.
Min DateTime(empty)Y-m-d H:iEarliest selectable date/time.
Max DateTime(empty)Y-m-d H:iLatest selectable date/time.
Include Secondsfalseon/offShow a seconds selector in the time picker.
Return FormatY-m-d H:i:sY-m-d H:i:s · U · DateTime objectStorage/return format.

Return values

return_format: 'Y-m-d H:i:s'

Returns a MySQL-compatible timestamp string.

$dt = get_field('event_start');
// "2026-06-15 14:30:00"

return_format: 'U'

Returns a Unix timestamp integer.

$ts = get_field('event_start');
// 1750000200

return_format: 'object'

Returns a PHP DateTime object.

$dt = get_field('event_start');
// DateTime object
echo $dt->format('D, M j, Y g:i A'); // "Mon, Jun 15, 2026 2:30 PM"

Usage

Displaying a formatted date-time

$raw = get_field('webinar_time'); // "2026-06-15 14:30:00"

if ($raw) {
    $dt = new DateTime($raw, new DateTimeZone('UTC'));
    $dt->setTimezone(new DateTimeZone('America/New_York'));

    echo '<time datetime="' . esc_attr($dt->format('c')) . '">';
    echo esc_html($dt->format('F j, Y \a\t g:i A T'));
    echo '</time>';
    // "June 15, 2026 at 10:30 AM EDT"
}

Checking if an event is upcoming

$start = get_field('event_start'); // Y-m-d H:i:s

if ($start) {
    $event_dt = new DateTime($start);
    $now      = new DateTime();

    if ($event_dt > $now) {
        echo '<span class="badge badge-upcoming">Upcoming</span>';
    } else {
        echo '<span class="badge badge-past">Past event</span>';
    }
}

Sorting posts by datetime field

$events = get_posts([
    'post_type'   => 'event',
    'meta_key'    => 'event_start',
    'orderby'     => 'meta_value',
    'order'       => 'ASC',
    'meta_query'  => [[
        'key'     => 'event_start',
        'value'   => current_time('mysql'),
        'compare' => '>=',
        'type'    => 'DATETIME',
    ]],
]);