Display blank date in hook_form
You can use a #pre_render function on that field to unset the values and add an empty option on the 3 select boxes.



$form['start_date'] = array(
    '#type' =&gt; 'date',
    '#title' =&gt; t('Date'),
    '#description' =&gt; t('Your field description ...'),
    '#required' =&gt; true,
    '#pre_render' =&gt; array('_YOUR_MODULE_form_pre_render_date'),
);




function _YOUR_MODULE_form_pre_render_date(&amp;$element)
{
    // Don't put empty values if a date has already been set
    if (date('Ynj') !== implode('', array_values($element['#default_value']))) {
        return $element;
    }

    // Loop through each field, add empty option and unset value
    foreach (array('year', 'month', 'day') as $field) {
        if (!isset($element[$field])) {
            continue;
        }

        unset($element[$field]['#value']);
        $element[$field]['#default_value'] = '0';
        $element[$field]['#options'] = array(
            '0' =&gt; '',
        ) + $element[$field]['#options'];
    }

    return $element;
}