diff --git a/core/Date.php b/core/Date.php
index eac218eb9e6fba6ba06292bffef1d05972cf629a..849f50973ab68c3f4b342c99131f507097dd49ff 100644
--- a/core/Date.php
+++ b/core/Date.php
@@ -11,7 +11,7 @@ namespace Piwik;
 
 use Exception;
 use Piwik\Container\StaticContainer;
-use Piwik\Plugins\LanguagesManager\Model as LanguagesManagerModel;
+use Piwik\Plugins\LanguagesManager\LanguagesManager;
 
 /**
  * Utility class that wraps date/time related PHP functions. Using this class can
@@ -612,6 +612,38 @@ class Date
         return new Date($result, $this->timezone);
     }
 
+    protected static $use12HourClock;
+
+    protected function getTimeFormat()
+    {
+        if (is_null(self::$use12HourClock)) {
+            self::$use12HourClock = LanguagesManager::uses12HourClockForCurrentUser();
+        }
+
+        $timeFormat = 'Intl_Format_Time_24';
+
+        if (self::$use12HourClock) {
+            $timeFormat = 'Intl_Format_Time_12';
+
+        }
+
+        $translator = StaticContainer::get('Piwik\Translation\Translator');
+        $template = $translator->translate($timeFormat);
+
+        return $template;
+    }
+
+    /**
+     * For testing purpose only: Overwrites time format
+     *
+     * @param bool $use12HourClock
+     */
+    public static function forceTimeFormat($use12HourClock = false)
+    {
+        self::$use12HourClock = $use12HourClock;
+    }
+
+
     /**
      * Returns a localized date string using the given template.
      * The template should contain tags that will be replaced with localized date strings.
@@ -629,30 +661,9 @@ class Date
         }
 
         if (strpos($template, '{time}') !== false) {
-
-            static $use12HourClock = null;
-
-            if (is_null($use12HourClock)) {
-
-                $model = new LanguagesManagerModel();
-
-                $use12HourClock = $model->uses12HourClock(Piwik::getCurrentUserLogin());
-            }
-
-            $timeFormat = 'Intl_Format_Time_24';
-
-            if ($use12HourClock) {
-                $timeFormat = 'Intl_Format_Time_12';
-
-            }
-
-            $translator = StaticContainer::get('Piwik\Translation\Translator');
-            $replacement = $translator->translate($timeFormat);
-
-            $template = str_replace('{time}', $replacement, $template);
+            $template = str_replace('{time}', $this->getTimeFormat(), $template);
         }
 
-
         $tokens = self::parseFormat($template);
 
         $out = '';
diff --git a/tests/PHPUnit/Unit/DateTest.php b/tests/PHPUnit/Unit/DateTest.php
index ba18ce1e709ede70b455a21f63ad885a0b283456..20c7b2d93307d2e91de4e0a7274f8aa8a59688e7 100644
--- a/tests/PHPUnit/Unit/DateTest.php
+++ b/tests/PHPUnit/Unit/DateTest.php
@@ -9,8 +9,10 @@
 namespace Piwik\Tests\Unit;
 
 use Exception;
+use Piwik\Container\StaticContainer;
 use Piwik\Date;
 use Piwik\SettingsServer;
+use Piwik\Translate;
 
 /**
  */
@@ -331,4 +333,34 @@ class DateTest extends \PHPUnit_Framework_TestCase
             $this->assertTrue($date->isLeapYear());
         }
     }
+
+
+    public function getLocalizedLongStrings()
+    {
+        return array(
+            array('en', false, '2000-01-01 16:05:52', '16:05:52'),
+            array('de', false, '2000-01-01 16:05:52', '16:05:52'),
+            array('en', true, '2000-01-01 16:05:52', '4:05:52 PM'),
+            array('de', true, '2000-01-01 04:05:52', '4:05:52 vorm.'),
+            array('zh-tw', true, '2000-01-01 04:05:52', '上午4:05:52'),
+            array('lt', true, '2000-01-01 16:05:52', '04:05:52 popiet'),
+            array('ar', true, '2000-01-01 04:05:52', '4:05:52 ص'),
+        );
+    }
+
+    /**
+     * @group Core
+     * @dataProvider getLocalizedLongStrings
+     */
+    public function testGetLocalizedTimeFormats($language, $use12HourClock, $time, $shouldBe)
+    {
+        Translate::loadAllTranslations();
+        StaticContainer::get('Piwik\Translation\Translator')->setCurrentLanguage($language);
+        Date::forceTimeFormat($use12HourClock);
+
+        $date = Date::factory($time);
+
+        $this->assertEquals($shouldBe, $date->getLocalized(Date::TIME_FORMAT));
+        Translate::reset();
+    }
 }