diff --git a/ip2country.admin.inc b/ip2country.admin.inc
index 6532faf..10e6b61 100644
--- a/ip2country.admin.inc
+++ b/ip2country.admin.inc
@@ -182,7 +182,14 @@ function ip2country_admin_settings() {
 
   $update_time = variable_get('ip2country_last_update', 0);
   if (!empty($update_time)) {
-    $message = t('Database last updated on @date at @time from @registry server.', array('@date' => format_date($update_time, 'custom', 'n/j/Y'), '@time' => format_date($update_time, 'custom', 'H:i:s T'), '@registry' => variable_get('ip2country_last_update_rir', 'unknown')));
+    $message = t(
+      'Database last updated on @date at @time from @registry server.',
+      array(
+        '@date' => format_date($update_time, 'custom', variable_get('date_format_ip2country_date', 'n/j/Y')),
+        '@time' => format_date($update_time, 'custom', variable_get('date_format_ip2country_time', 'H:i:s T')),
+        '@registry' => variable_get('ip2country_last_update_rir', 'unknown')
+      )
+    );
   }
   else {
     $message = t('Database is empty. You may fill the database by pressing the @update button.', array('@update' => t('Update')));
diff --git a/ip2country.install b/ip2country.install
index e59f619..79afc28 100644
--- a/ip2country.install
+++ b/ip2country.install
@@ -97,6 +97,10 @@ function ip2country_install() {
     module_load_include('inc', 'ip2country');
     ip2country_update_database();
   }
+
+  // Set the default date format for reporting database update date/time.
+  variable_set('date_format_ip2country_date', 'n/j/Y');
+  variable_set('date_format_ip2country_time', 'H:i:s T');
 }
 
 
@@ -108,7 +112,7 @@ function ip2country_install() {
  */
 function ip2country_uninstall() {
 
-  // Remove all module variables from the database
+  // Remove all module variables from the database.
   variable_del('ip2country_populate_database_on_install');
   variable_del('ip2country_debug');
   variable_del('ip2country_test_type');
@@ -121,6 +125,10 @@ function ip2country_uninstall() {
   variable_del('ip2country_update_interval');
   variable_del('ip2country_update_database');
   variable_del('ip2country_watchdog');
+
+  // Date/time format settings.
+  variable_del('date_format_ip2country_date');
+  variable_del('date_format_ip2country_time');
 }
 
 
@@ -184,3 +192,13 @@ function ip2country_update_2() {
 
   return $ret;
 }
+
+
+/**
+ * Provide configurable date/time formats for admin page.
+ */
+function ip2country_update_7100() {
+  // Set the default date format for reporting database update date/time.
+  variable_set('date_format_ip2country_date', 'n/j/Y');
+  variable_set('date_format_ip2country_time', 'H:i:s T');
+}
diff --git a/ip2country.module b/ip2country.module
index e5dd7d3..ac56303 100644
--- a/ip2country.module
+++ b/ip2country.module
@@ -125,6 +125,83 @@ function ip2country_menu() {
   return $items;
 }
 
+/**
+ * Implements hook_date_formats().
+ */
+function ip2country_date_formats() {
+  $formats = array();
+
+  // Date-only formats.
+  $formats[] = array(
+    'type' => 'ip2country_date',
+    'format' => 'n/j/Y',
+    'locales' => array(),
+  );
+  $formats[] = array(
+    'type' => 'ip2country_date',
+    'format' => 'm/d/Y',
+    'locales' => array(),
+  );
+  $formats[] = array(
+    'type' => 'ip2country_date',
+    'format' => 'Y-m-d',
+    'locales' => array(),
+  );
+  $formats[] = array(
+    'type' => 'ip2country_date',
+    'format' => 'n/j/Y',
+    'locales' => array('en-us'),
+  );
+  $formats[] = array(
+    'type' => 'ip2country_date',
+    'format' => 'd/m/Y',
+    'locales' => array('en-gb', 'en-hk', 'en-ie', 'el-gr', 'es-es', 'fr-be', 'fr-fr', 'fr-lu', 'it-it', 'nl-be', 'pt-pt'),
+  );
+  $formats[] = array(
+    'type' => 'ip2country_date',
+    'format' => 'Y/m/d',
+    'locales' => array('en-ca', 'fr-ca', 'no-no', 'sv-se'),
+  );
+  $formats[] = array(
+    'type' => 'ip2country_date',
+    'format' => 'd.m.Y',
+    'locales' => array('de-ch', 'de-de', 'de-lu', 'fi-fi', 'fr-ch', 'is-is', 'pl-pl', 'ro-ro', 'ru-ru'),
+  );
+
+  // Time-only formats.
+  $formats[] = array(
+    'type' => 'ip2country_time',
+    'format' => 'H:i:s T',
+    'locales' => array(),
+  );
+  $formats[] = array(
+    'type' => 'ip2country_time',
+    'format' => 'H:i:s T',
+    'locales' => array('en-us'),
+  );
+  $formats[] = array(
+    'type' => 'ip2country_time',
+    'format' => 'H:i',
+    'locales' => array('en-gb', 'en-hk', 'en-ie', 'el-gr', 'es-es', 'fr-be', 'fr-fr', 'fr-lu', 'it-it', 'nl-be', 'pt-pt', 'en-ca', 'fr-ca', 'no-no', 'sv-se', 'de-ch', 'de-de', 'de-lu', 'fi-fi', 'fr-ch', 'is-is', 'pl-pl', 'ro-ro', 'ru-ru'),
+  );
+  $formats[] = array(
+    'type' => 'ip2country_time',
+    'format' => 'g:ia',
+    'locales' => array(),
+  );
+
+  return $formats;
+}
+
+/**
+ * Implements hook_date_format_types().
+ */
+function ip2country_date_format_types() {
+  return array(
+    'ip2country_date' => t('Date only (ip2country)'),
+    'ip2country_time' => t('Time only (ip2country)'),
+  );
+}
 
 /**
  * Implements hook_user_login().
