Dans le settings.py
fichier de mon projet django , j'ai cette ligne:
TIME_ZONE = 'UTC'
Mais je veux que mon application s'exécute dans le fuseau horaire UTC + 2, alors je l'ai changée en
TIME_ZONE = 'UTC+2'
Cela donne l'erreur ValueError: Incorrect timezone setting: UTC+2
. Quelle est la bonne façon de procéder?
Merci!
Pour obtenir un ensemble de tous les noms de fuseaux horaires (ID) valides de la base de données tz , vous pouvez utiliser le
pytz
module en Python :la source
pytz.common_timezones
.Choisissez un fuseau horaire valide dans la base de données tzinfo . Ils ont tendance à prendre la forme par exemple
Africa/Gaborne
etUS/Eastern
Trouvez celui qui correspond à la ville la plus proche de vous, ou celui qui a votre fuseau horaire, puis définissez votre valeur sur
TIME_ZONE
pour correspondre.la source
Les valeurs timeZone valides sont basées sur la base de données tz (timezone) utilisée par Linux et d'autres systèmes Unix. Les valeurs sont des chaînes (xsd: string) sous la forme « Zone / Emplacement », dans lesquelles:
La zone est un nom de continent ou d'océan. La zone comprend actuellement:
L'emplacement est la ville, l'île ou un autre nom régional.
Les noms de zone et les abréviations de sortie adhèrent aux conventions UNIX POSIX (interface de système d'exploitation portable), qui utilise des signes positifs (+) à l'ouest de Greenwich et des signes négatifs (-) à l'est de Greenwich, ce qui est le contraire de ce qui est généralement attendu. Par exemple, «Etc / GMT + 4» correspond à 4 heures de retard sur UTC (c'est-à-dire à l'ouest de Greenwich) plutôt que 4 heures d'avance sur UTC (temps universel coordonné) (à l'est de Greenwich).
Voici une liste de tous les fuseaux horaires valides
Vous pouvez modifier le fuseau horaire dans vos paramètres.py comme suit
la source
J'ai trouvé cette question cherchant à changer le fuseau horaire dans le
settings.py
fichier de mon projet Django au Royaume-Uni.En utilisant la base de données tz dans la solution de jfs, j'ai trouvé la réponse:
la source
Remplacez TIME_ZONE par votre fuseau horaire local et conservez USE_TZ sur True dans "setting.py":
TIME_ZONE = 'Asie / Shanghai'
USE_I18N = Vrai
USE_L10N = Vrai
USE_TZ = Vrai
Cela écrira et stockera l'objet datetime au format UTC dans la base de données principale.
Ensuite, utilisez la balise de modèle pour convertir l'heure UTC dans votre modèle d'interface en tant que telle:
ou utilisez les filtres de modèle de manière concise:
Vous pouvez vérifier plus de détails dans la documentation officielle: Fuseau horaire par défaut et fuseau horaire actuel
Lorsque la prise en charge des fuseaux horaires est activée, Django stocke les informations datetime en UTC dans la base de données, utilise en interne des objets datetime sensibles au fuseau horaire et les traduit dans le fuseau horaire de l'utilisateur final dans des modèles et des formulaires.
la source
Solution universelle, basée sur la prise en charge des noms TZ de Django :
+/- est intentionnellement commuté.
la source
télécharger le dernier fichier pytz (pytz-2019.3.tar.gz) à partir de:
copiez-le et extrayez-le dans le
site_packages
répertoire de votre projetdans cmd, accédez au dossier extrait et exécutez:
TIME_ZONE = 'Etc/GMT+2'
ou nom du paysla source