diff --git a/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js b/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js index fd7243ed95..43bbfcaf09 100644 --- a/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js +++ b/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js @@ -21,7 +21,7 @@ init: function() { var body = document.getElementsByTagName('body')[0]; var serverOffset = body.getAttribute('data-admin-utc-offset'); - if (serverOffset !== undefined) { + if (serverOffset) { var localOffset = new Date().getTimezoneOffset() * -60; DateTimeShortcuts.timezoneOffset = localOffset - serverOffset; } @@ -43,7 +43,7 @@ now: function() { var body = document.getElementsByTagName('body')[0]; var serverOffset = body.getAttribute('data-admin-utc-offset'); - if (serverOffset !== undefined) { + if (serverOffset) { var localNow = new Date(); var localOffset = localNow.getTimezoneOffset() * -60; localNow.setTime(localNow.getTime() + 1000 * (serverOffset - localOffset)); diff --git a/docs/releases/1.9.1.txt b/docs/releases/1.9.1.txt index 20fd723d2b..2e1aa7cbb1 100644 --- a/docs/releases/1.9.1.txt +++ b/docs/releases/1.9.1.txt @@ -46,3 +46,7 @@ Bugfixes * Fixed ``TypedChoiceField`` change detection with nullable fields (:ticket:`25942`). + +* Fixed incorrect timezone warnings in custom admin templates that don't have + a ``data-admin-utc-offset`` attribute in the ``body`` tag. + (:ticket:`25845`). diff --git a/js_tests/admin/DateTimeShortcuts.test.js b/js_tests/admin/DateTimeShortcuts.test.js index 2fc9d9a8c6..e993090233 100644 --- a/js_tests/admin/DateTimeShortcuts.test.js +++ b/js_tests/admin/DateTimeShortcuts.test.js @@ -16,4 +16,8 @@ test('init', function(assert) { assert.equal(shortcuts.length, 1); assert.equal(shortcuts.find('a:first').text(), 'Today'); assert.equal(shortcuts.find('a:last .date-icon').length, 1); + + // To prevent incorrect timezone warnings on date/time widgets, timezoneOffset + // should be 0 when a timezone offset isn't set in the HTML body attribute. + assert.equal(DateTimeShortcuts.timezoneOffset, 0); });