diff --git a/modules/cps_scheduler/cps_scheduler.module b/modules/cps_scheduler/cps_scheduler.module
index 3daac1b..cc8f6ca 100644
--- a/modules/cps_scheduler/cps_scheduler.module
+++ b/modules/cps_scheduler/cps_scheduler.module
@@ -173,11 +173,11 @@ function cps_scheduler_form_cps_transition_transition_form_alter(&$form, &$form_
  */
 function cps_scheduler_form_cps_transition_transition_form_validate($form, $form_state) {
   if (empty($form_state['values']['publish_on'])) {
-    form_set_error('publish_on', t("The 'publish on' date cannot be empty"));
+    form_set_error('publish_on', t('The "publish on" date cannot be empty'));
   }
 
-  if (strtotime($form_state['values']['publish_on']) <= REQUEST_TIME) {
-    form_set_error('publish_on', t("The 'publish on' date must be in the future"));
+  if (_cps_scheduler_element_timestamp($form['scheduler_settings']['publish_on'], $form_state) <= REQUEST_TIME) {
+    form_set_error('publish_on', t('The "publish on" date must be in the future'));
   }
 }
 
@@ -187,7 +187,7 @@ function cps_scheduler_form_cps_transition_transition_form_validate($form, $form
 function cps_scheduler_form_cps_transition_transition_form_submit($form, &$form_state) {
   // Set publish on attribute to changeset to use it on transition callback.
   if (!empty($form_state['values']['publish_on'])) {
-    $form_state['changeset']->publish_on = $form_state['values']['publish_on'];
+    $form_state['changeset']->publish_on = _cps_scheduler_element_timestamp($form['scheduler_settings']['publish_on'], $form_state);
   }
 }
 
@@ -210,7 +210,7 @@ function cps_scheduler_form_cps_transition_transition_form_submit($form, &$form_
  */
 function cps_scheduler_schedule_transition_callback(CPSChangeset $changeset, $transition, $transition_info) {
   if (!empty($changeset->publish_on)) {
-    $publish_on = strtotime($changeset->publish_on);
+    $publish_on = $changeset->publish_on;
     $message = t('Scheduled for %date', ['%date' => date(CPS_SCHEDULER_DATE_FORMAT, $publish_on)]);
 
     db_merge('cps_scheduler')
@@ -248,7 +248,7 @@ function cps_scheduler_cancel_schedule_transition_callback(CPSChangeset $changes
     ->condition('changeset_id', $changeset->changeset_id)
     ->execute();
 
-  $message = t('Site version removed form scheduling.');
+  $message = t('Site version removed from scheduling');
   $changeset->setStatus($transition_info['state'], $message);
   $changeset->save();
   return TRUE;
@@ -360,7 +360,7 @@ function cps_scheduler_form_cps_changeset_preview_form_alter(&$form, &$form_stat
     // Add publish and schedule/unschedule links.
     $changeset = cps_changeset_load($changeset_id);
 
-    if ($changeset->status == 'scheduled') {
+      if ($changeset->status == 'scheduled') {
       $unschedule_path = 'admin/structure/changesets/' . $changeset_id . '/transition-cancel_scheduling';
       $unschedule_text = t('Unschedule Site Version');
 
@@ -442,3 +442,31 @@ function _cps_scheduler_can_be_scheduled($changeset) {
 
   return count($errors) == 0;
 }
+
+/**
+ * Get timestamp that takes date_popup functionality into an account.
+ *
+ * @param $changeset_id
+ *  The changeset ID
+ *
+ * @return int
+ */
+function _cps_scheduler_element_timestamp($element, $form_state) {
+  $timestamp = strtotime($form_state['values']['publish_on']);
+
+  // Parse time from possible multiple formats.
+  if (module_exists('date_popup')) {
+    $granularity = date_format_order($element['#date_format']);
+    $has_time = date_has_time($granularity);
+    $format = date_popup_date_format($element);
+    $format .= $has_time ? ' ' . date_popup_time_format($element) : '';
+    // Check if the date is empty, if yes, then leave it blank.
+    $datetime = !empty($form_state['input']['publish_on']['date']) ? trim($form_state['input']['publish_on']['date']) : '';
+    $datetime .= $has_time ? ' ' . trim($form_state['input']['publish_on']['time']) : '';
+
+    $date = new DateObject($datetime, $element['#date_timezone'], $format);
+    $timestamp = $date->getTimestamp();
+  }
+
+  return $timestamp;
+}
