Я думаю, что модуль Date даст вам вызовы API для этого.
В моем случае мои требования были довольно просты, и я не хотел создавать дополнительную зависимость от модуля, поэтому я использовал следующее для формирования объекта PHP DateTime:
$date_arr = $form_state['values']['date'];
if ($date_arr['year'] && $date_arr['month'] && $date_arr['day']) {
$date = new DateTime();
$date->setDate($date_arr['year'], $date_arr['month'], $date_arr['day']);
} else {
$date = NULL;
}
Для хранения в базе данных (как метка времени UNIX, как и соглашение Drupal), я использовал $ date-> getTimestamp ().
Мне не нужно было возвращать дату в форму, но если бы я это сделал, я бы попробовал что-то вроде:
$query = db_query("select mydate from table");
while ($fields = db_fetch_array($query)) {
$date = new DateTime();
$date->setTimestamp($fields[0]);
$form['order']['date'] = array(
'#type' => 'date',
'#title' => 'Order date',
'#default_value' => array(
year => $date->format('Y'),
month => $date->format('m'),
day => $date->format('d'),
),
);
}
Я не проверял это, поэтому вам нужно экспериментировать.
Надеюсь, это поможет!