diff --git a/nodewords_extra/includes/nodewords_extra.nodewords.tags.inc b/nodewords_extra/includes/nodewords_extra.nodewords.tags.inc
index dee3883..2826128 100644
--- a/nodewords_extra/includes/nodewords_extra.nodewords.tags.inc
+++ b/nodewords_extra/includes/nodewords_extra.nodewords.tags.inc
@@ -66,15 +66,7 @@ function nodewords_extra_dc_date_form(&$form, $content, $options) {
     '#tree' => TRUE,
   );
 
-  $bool = (
-    isset($content['value']['day']) &&
-    isset($content['value']['month']) &&
-    isset($content['value']['year'])
-  );
-  if ($bool) {
-    $value = $content['value']['day'] . ' ' . $content['value']['month'] . ' ' . $content['value']['year'];
-  }
-  elseif (isset($content['value']) && is_string($content['value'])) {
+  if (isset($content['value']) && is_string($content['value'])) {
     $value = $content['value'];
   }
   else {
@@ -94,9 +86,8 @@ function nodewords_extra_dc_date_form(&$form, $content, $options) {
  */
 function nodewords_extra_dc_date_is_empty($content) {
   $bool = (
-    isset($content['value']['day']) &&
-    isset($content['value']['month']) &&
-    isset($content['value']['year'])
+    isset($content['value']) && 
+    is_string($content['value'])
   );
   if ($bool) {
     return FALSE;
@@ -109,22 +100,15 @@ function nodewords_extra_dc_date_is_empty($content) {
  * Set the meta tag content.
  */
 function nodewords_extra_dc_date_prepare(&$tags, $content, $options) {
-  $bool = (
-    isset($content['value']['day']) &&
-    isset($content['value']['month']) &&
-    isset($content['value']['year'])
-  );
-  if ($bool) {
-    $value = $content['value']['day'] . ' ' . $content['value']['month'] . ' ' . $content['value']['year'];
-  }
-  elseif (isset($content['value']) && is_string($content['value'])) {
+  if (isset($content['value']) && is_string($content['value'])) {
     $value = $content['value'];
   }
   else {
     $value = '';
   }
   if (!empty($value)) {
-    $values = array_filter(array_map('trim', explode(' ', $value)));
+    $tokenized_value = nodewords_replace_tokens($value, $options);
+    $values = array_filter(array_map('trim', explode(' ', $tokenized_value)));
     if (count($values) == 3) {
       $time = @mktime(0, 0, 0, $values[0], $values[1], $values[2]);
       if ($time > 0) {
