diff --git a/js/ui/panel.js b/js/ui/panel.js
index 447bb85..7d6c5d8 100644
@@ -328,6 +328,24 @@ Panel.prototype = {
         this._clock = new Clutter.Text({ font_name: DEFAULT_FONT,
                                          color: PANEL_FOREGROUND_COLOR,
                                          text: "" });
+
+                /* Try to use the panel applet's setting, default to 12-hour. */
+        let gconf = Shell.GConf.get_default();
+        let clockFormat = gconf.get_string("clock/format");
+
+        /* Default to 12-hour clock */
+        if(clockFormat == null){
+            /* Translators: This is a time format.  */
+            clockFormat = _("%a %l:%M %p");
+            gconf.set_string("clock/format", clockFormat);
+        }
+
+        gconf.watch_directory("clock/format");
+        gconf.connect("changed::clock/format",
+                      Lang.bind(this, this._updateClockFormat));
+
+        this._clockFormat = clockFormat;
+
         clockButton.add_actor(this._clock);
 
         this._calendarPopup = null;
@@ -479,6 +497,13 @@ Panel.prototype = {
             this._trayBox.spacing = TRAY_SPACING;
     },
 
+    _updateClockFormat : function() {
+        let gconf = Shell.GConf.get_default();
+        let format = gconf.get_string("clock/format");
+        this._clockFormat = format;
+        this._updateClock();
+    },
+
     _updateClock: function() {
         let displayDate = new Date();
         let msecRemaining = 60000 - (1000 * displayDate.getSeconds() +
@@ -487,8 +512,9 @@ Panel.prototype = {
             displayDate.setMinutes(displayDate.getMinutes() + 1);
             msecRemaining += 60000;
         }
-        /* Translators: This is a time format.  */
-        this._clock.set_text(displayDate.toLocaleFormat(_("%a %l:%M %p")));
+
+        this._clock.set_text(displayDate.toLocaleFormat(this._clockFormat));
+
         Mainloop.timeout_add(msecRemaining, Lang.bind(this, this._updateClock));
         return false;
     },
