diff --git date_popup/date_popup.module date_popup/date_popup.module
index 62fba29..0bda791 100644
--- date_popup/date_popup.module
+++ date_popup/date_popup.module
@@ -333,6 +333,22 @@ function date_popup_validate($element, &$form_state) {
     form_set_value($element, NULL, $form_state);
     return;
   }
+  $format = $element['#date_format'];
+  $format = strtr($format, timepicker_format_replacements());
+  $format = date_limit_format($format, $granularity);
+  // Evaluate date and time parts separately since we can't know or care
+  // how they're combined in the complete date format.
+  $time_format = date_limit_format($format, array('hour', 'minute', 'second'));
+  
+   // we have the proper AM/PM
+  $meridiem = TRUE;
+  if (strpos($time_format, 'A') !== FALSE) {
+    $meridiem = (stripos($element['#value']['time'], 'AM') !== FALSE || stripos($element['#value']['time'], 'PM') !== FALSE);
+  }
+  if (!$meridiem) {
+    form_set_error($error_field . '][time', t('Field %field must have either AM or PM', array('%field' => $label)));
+    return;
+  }
 
   require_once('./'. drupal_get_path('module', 'date_api') .'/date_api_elements.inc');
   date_popup_load();
