diff --git a/gracedb/templatetags/__init__.py b/gracedb/templatetags/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/gracedb/templatetags/timeutil.py b/gracedb/templatetags/timeutil.py
new file mode 100644
index 0000000000000000000000000000000000000000..07f1827cd4a3259796b540092b24d8a91150e334
--- /dev/null
+++ b/gracedb/templatetags/timeutil.py
@@ -0,0 +1,65 @@
+
+from django import template
+from django.conf import settings
+from django.utils import dateformat
+
+import pytz
+
+# DATETIME_SETTINGS is guaranteed to be set.  GRACE_DATETIME_FORMAT is not.
+FORMAT = getattr(settings, 'GRACE_DATETIME_FORMAT', settings.DATETIME_FORMAT)
+
+LOCAL_TZ = pytz.timezone(settings.TIME_ZONE)
+
+register = template.Library()
+
+@register.filter(name='utc')
+def utc(dt, format=FORMAT):
+    if not dt.tzinfo:
+        dt = LOCAL_TZ.localize(dt)
+    dt = dt.astimezone(pytz.utc)
+    return dateformat.format(dt, format)
+
+@register.filter(name='gpsdate')
+def gpsdate(gpstime, format=FORMAT):
+    return dateformat.format(gpsToUTC(gpstime), format)
+
+
+
+# GPS time conversion
+
+# This is kind of awful in that leapSeconds
+# are hard coded and needs to be kept up to date.
+# Also, this should be somewhere else.
+
+import calendar, datetime
+
+gpsEpoch = calendar.timegm((1980, 1, 6, 0,  0,  0,  0,  0,  0))
+
+leapSeconds = map(calendar.timegm, [
+    (1981, 7, 0, 0, 0, 0, 0, 0, 0),
+    (1982, 7, 0, 0, 0, 0, 0, 0, 0),
+    (1983, 7, 0, 0, 0, 0, 0, 0, 0),
+    (1985, 7, 0, 0, 0, 0, 0, 0, 0),
+    (1988, 1, 0, 0, 0, 0, 0, 0, 0),
+    (1990, 1, 0, 0, 0, 0, 0, 0, 0),
+    (1991, 1, 0, 0, 0, 0, 0, 0, 0),
+    (1992, 7, 0, 0, 0, 0, 0, 0, 0),
+    (1993, 7, 0, 0, 0, 0, 0, 0, 0),
+    (1994, 7, 0, 0, 0, 0, 0, 0, 0),
+    (1996, 1, 0, 0, 0, 0, 0, 0, 0),
+    (1997, 7, 0, 0, 0, 0, 0, 0, 0),
+    (1999, 1, 0, 0, 0, 0, 0, 0, 0),
+    (2006, 1, 0, 0, 0, 0, 0, 0, 0),
+    (2009, 1, 0, 0, 0, 0, 0, 0, 0),
+])
+
+def gpsToPosixTime(gpsTime):
+    t = gpsEpoch + gpsTime
+    for leap in leapSeconds:
+        if t >= leap:
+            t = t - 1
+    return t
+
+def gpsToUTC(gpsTime):
+    t = gpsToPosixTime(gpsTime)
+    return datetime.datetime.fromtimestamp(t, pytz.utc)
diff --git a/settings.py b/settings.py
index 52f5f0d086e70d4dec6ad483f31b3397b6822a30..67740dd4570cddc8374660e798ea77f778b61834 100644
--- a/settings.py
+++ b/settings.py
@@ -39,7 +39,9 @@ DATABASE_PORT = ''             # Set to empty string for default.
 # although not all choices may be available on all operating systems.
 # If running in a Windows environment this must be set to the same as your
 # system time zone.
+
 TIME_ZONE = 'America/Chicago'
+GRACE_DATETIME_FORMAT = 'Y-m-d H:i:s T'
 
 # Language code for this installation. All choices can be found here:
 # http://www.i18nguy.com/unicode/language-identifiers.html
@@ -104,9 +106,9 @@ TEMPLATE_DIRS = (
 
 INSTALLED_APPS = (
     'django.contrib.auth',
+    'django.contrib.admin',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.sites',
-    'django.contrib.admin',
     'gracedb.gracedb',
 )
diff --git a/settings_dev.py b/settings_dev.py
index 2f764cc87e8d66737ca54564c7e51997ddae2641..8baa7da37489051962d17d32a50f08d89c8e68bb 100644
--- a/settings_dev.py
+++ b/settings_dev.py
@@ -32,7 +32,9 @@ DATABASE_PORT = ''             # Set to empty string for default.
 # although not all choices may be available on all operating systems.
 # If running in a Windows environment this must be set to the same as your
 # system time zone.
+
 TIME_ZONE = 'America/Chicago'
+GRACE_DATETIME_FORMAT = 'Y-m-d H:i:s T'
 
 # Language code for this installation. All choices can be found here:
 # http://www.i18nguy.com/unicode/language-identifiers.html
diff --git a/templates/feeds/latest_description.html b/templates/feeds/latest_description.html
index 61dd235691b95003fc83352b5119af871325d40e..db8d88f78f47e8f9fec1023324a24d798e889a09 100644
--- a/templates/feeds/latest_description.html
+++ b/templates/feeds/latest_description.html
@@ -1,6 +1,7 @@
+{% load timeutil %}
 <ul>
     <li><a href="{{ obj.weburl }}">Data</a></li>
     <li><a href="{{ obj.wikiurl }}">TWiki</a></li>
 </ul>
 Sumbmitter: {{ obj.submitter.name }}<br/>
-Created: {{ obj.created }}
+Created: {{ obj.created|utc }}
diff --git a/templates/gracedb/event_detail.html b/templates/gracedb/event_detail.html
index 9482201121477c94778c39cedb40092e807dabcd..c6e8983fa8f1e5f9d79f597b4358d702bb0952bb 100644
--- a/templates/gracedb/event_detail.html
+++ b/templates/gracedb/event_detail.html
@@ -1,4 +1,5 @@
 {% extends "base.html" %}
+{% load timeutil %}
 
 {% block title %}View {{ object.graceid }}{% endblock %}
 {% block heading %}View {{ object.graceid }}{% endblock %}
@@ -11,7 +12,8 @@
   <tr><th>Group</th><td>{{ object.group.name }}</td></tr>
   <tr><th>Type</th><td>{{ object.get_analysisType_display }}</td></tr>
 {% if object.gpstime %}
-  <tr><th>GPS Time</th><td>{{ object.gpstime }}</td></tr>
+  <tr><th>GPS Time</th><td>
+        <span title="{{ object.gpstime|gpsdate }}">{{ object.gpstime }}</span></td></tr>
 {% endif %}
   <tr><th>Data</th><td>
     <a href="{{ object.weburl }}">{{ object.weburl }}</a>
@@ -20,7 +22,8 @@
     <a href="{{ object.wikiurl }}">{{ object.wikiurl }}</a>
     </td></tr>
   <tr><th>Sumitter</th><td>{{ object.submitter.name }}</td></tr>
-  <tr><th>Created</th><td>{{ object.created }}</td></tr>
+  <tr><th>Created</th><td>{{ object.created|utc }}
+                          </td></tr>
 </table>
 
 {% if object.eventlog_set.count %}
@@ -34,7 +37,7 @@
     </tr>
   {% for log in object.eventlog_set.iterator %}
     <tr class={% cycle 'odd' 'even' %}>
-        <td>{{ log.created }}</td>
+        <td>{{ log.created|utc }}</td>
         <td>{{ log.issuer }}</td>
         <td><a href="{{ log.fileurl }}">{{ log.filename }}</a></td>
         <td>{{ log.comment }}</td>
diff --git a/templates/gracedb/event_list.html b/templates/gracedb/event_list.html
index f8792f12707f1f88101aab64c03a6a981a73173e..5bdac7bed938cee8e02d1f72c765a517e8e3d3ae 100644
--- a/templates/gracedb/event_list.html
+++ b/templates/gracedb/event_list.html
@@ -1,4 +1,5 @@
 {% extends "base.html" %}
+{% load timeutil %}
 
 {% block title %}{{ title }}{% endblock %}
 {% block heading %}{{ title }}{% endblock %}
@@ -47,7 +48,9 @@
         <td>{{ obj.submitter }} </td>
         <td>{{ obj.group }} </td>
         <td>{{ obj.get_analysisType_display }} </td>
-        <td>{% if obj.gpstime%}{{ obj.gpstime }}{% endif %}</td>
+        <td>{% if obj.gpstime%}
+                <span title="{{ obj.gpstime|gpsdate }}">{{ obj.gpstime }}</span>
+            {% endif %}</td>
         <td><a href="{{ obj.weburl }}">Web: {{ obj.graceid }}</a></td>
         <td><a href="{{ obj.wikiurl }}">Wiki: {{ obj.graceid }}</a></td>
     </tr>