Fixed #1480 -- Added the ability to use the system timezone. Thanks to Ramiro Morales for the patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12602 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
0ff624a3cb
commit
46cc7021a8
|
@ -102,7 +102,7 @@ class Settings(object):
|
||||||
new_installed_apps.append(app)
|
new_installed_apps.append(app)
|
||||||
self.INSTALLED_APPS = new_installed_apps
|
self.INSTALLED_APPS = new_installed_apps
|
||||||
|
|
||||||
if hasattr(time, 'tzset'):
|
if hasattr(time, 'tzset') and getattr(self, 'TIME_ZONE'):
|
||||||
# Move the time zone info into os.environ. See ticket #2315 for why
|
# Move the time zone info into os.environ. See ticket #2315 for why
|
||||||
# we don't do this unconditionally (breaks Windows).
|
# we don't do this unconditionally (breaks Windows).
|
||||||
os.environ['TZ'] = self.TIME_ZONE
|
os.environ['TZ'] = self.TIME_ZONE
|
||||||
|
|
|
@ -23,6 +23,8 @@ DATABASES = {
|
||||||
# Local time zone for this installation. Choices can be found here:
|
# Local time zone for this installation. Choices can be found here:
|
||||||
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
|
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
|
||||||
# although not all choices may be available on all operating systems.
|
# although not all choices may be available on all operating systems.
|
||||||
|
# On Unix systems, a value of None will cause Django to use the same
|
||||||
|
# timezone as the operating system.
|
||||||
# If running in a Windows environment this must be set to the same as your
|
# If running in a Windows environment this must be set to the same as your
|
||||||
# system time zone.
|
# system time zone.
|
||||||
TIME_ZONE = 'America/Chicago'
|
TIME_ZONE = 'America/Chicago'
|
||||||
|
|
|
@ -119,7 +119,7 @@ class DatabaseWrapper(BaseDatabaseWrapper):
|
||||||
set_tz = False
|
set_tz = False
|
||||||
settings_dict = self.settings_dict
|
settings_dict = self.settings_dict
|
||||||
if self.connection is None:
|
if self.connection is None:
|
||||||
set_tz = True
|
set_tz = settings_dict.get('TIME_ZONE')
|
||||||
if settings_dict['NAME'] == '':
|
if settings_dict['NAME'] == '':
|
||||||
from django.core.exceptions import ImproperlyConfigured
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
raise ImproperlyConfigured("You need to specify NAME in your Django settings file.")
|
raise ImproperlyConfigured("You need to specify NAME in your Django settings file.")
|
||||||
|
|
|
@ -113,7 +113,7 @@ class DatabaseWrapper(BaseDatabaseWrapper):
|
||||||
set_tz = False
|
set_tz = False
|
||||||
settings_dict = self.settings_dict
|
settings_dict = self.settings_dict
|
||||||
if self.connection is None:
|
if self.connection is None:
|
||||||
set_tz = True
|
set_tz = settings_dict.get('TIME_ZONE')
|
||||||
if settings_dict['NAME'] == '':
|
if settings_dict['NAME'] == '':
|
||||||
from django.core.exceptions import ImproperlyConfigured
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
raise ImproperlyConfigured("You need to specify NAME in your Django settings file.")
|
raise ImproperlyConfigured("You need to specify NAME in your Django settings file.")
|
||||||
|
|
|
@ -1505,28 +1505,42 @@ TIME_ZONE
|
||||||
|
|
||||||
Default: ``'America/Chicago'``
|
Default: ``'America/Chicago'``
|
||||||
|
|
||||||
A string representing the time zone for this installation. `See available choices`_.
|
.. versionchanged:: 1.2
|
||||||
(Note that list of available choices lists more than one on the same line;
|
``None`` was added as an allowed value.
|
||||||
you'll want to use just one of the choices for a given time zone. For instance,
|
|
||||||
one line says ``'Europe/London GB GB-Eire'``, but you should use the first bit
|
|
||||||
of that -- ``'Europe/London'`` -- as your ``TIME_ZONE`` setting.)
|
|
||||||
|
|
||||||
Note that this is the time zone to which Django will convert all dates/times --
|
A string representing the time zone for this installation, or
|
||||||
not necessarily the timezone of the server. For example, one server may serve
|
``None``. `See available choices`_. (Note that list of available
|
||||||
multiple Django-powered sites, each with a separate time-zone setting.
|
choices lists more than one on the same line; you'll want to use just
|
||||||
|
one of the choices for a given time zone. For instance, one line says
|
||||||
|
``'Europe/London GB GB-Eire'``, but you should use the first bit of
|
||||||
|
that -- ``'Europe/London'`` -- as your ``TIME_ZONE`` setting.)
|
||||||
|
|
||||||
Normally, Django sets the ``os.environ['TZ']`` variable to the time zone you
|
Note that this is the time zone to which Django will convert all
|
||||||
specify in the ``TIME_ZONE`` setting. Thus, all your views and models will
|
dates/times -- not necessarily the timezone of the server. For
|
||||||
automatically operate in the correct time zone. However, if you're manually
|
example, one server may serve multiple Django-powered sites, each with
|
||||||
|
a separate time-zone setting.
|
||||||
|
|
||||||
|
Normally, Django sets the ``os.environ['TZ']`` variable to the time
|
||||||
|
zone you specify in the ``TIME_ZONE`` setting. Thus, all your views
|
||||||
|
and models will automatically operate in the correct time zone.
|
||||||
|
However, Django won't set the ``TZ`` environment variable under the
|
||||||
|
following conditions:
|
||||||
|
|
||||||
|
* If you're using the manual configuration option as described in
|
||||||
:ref:`manually configuring settings
|
:ref:`manually configuring settings
|
||||||
<settings-without-django-settings-module>`, Django will *not* touch the ``TZ``
|
<settings-without-django-settings-module>`, or
|
||||||
environment variable, and it'll be up to you to ensure your processes are
|
|
||||||
running in the correct environment.
|
* If you specify ``TIME_ZONE = None``. This will cause Django to fall
|
||||||
|
back to using the system timezone.
|
||||||
|
|
||||||
|
If Django doesn't set the ``TZ`` environment variable, it's up to you
|
||||||
|
to ensure your processes are running in the correct environment.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
Django cannot reliably use alternate time zones in a Windows environment.
|
Django cannot reliably use alternate time zones in a Windows
|
||||||
If you're running Django on Windows, this variable must be set to match the
|
environment. If you're running Django on Windows, this variable
|
||||||
system timezone.
|
must be set to match the system timezone.
|
||||||
|
|
||||||
|
|
||||||
.. _See available choices: http://www.postgresql.org/docs/8.1/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE
|
.. _See available choices: http://www.postgresql.org/docs/8.1/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ Test the globbing of INSTALLED_APPS.
|
||||||
>>> sys.path = old_sys_path
|
>>> sys.path = old_sys_path
|
||||||
|
|
||||||
# Undo a side-effect of installing a new settings object.
|
# Undo a side-effect of installing a new settings object.
|
||||||
>>> if hasattr(time, "tzset"):
|
>>> if hasattr(time, "tzset") and old_tz:
|
||||||
... os.environ["TZ"] = old_tz
|
... os.environ["TZ"] = old_tz
|
||||||
... time.tzset()
|
... time.tzset()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue