Obtenez et convertissez l'heure actuelle dans le fuseau horaire local du système avec python

environnement

$ python --version
Python 2.7.12

Si vous ne vous souciez pas du fuseau horaire, une erreur se produira

Lorsque j'ai essayé de comparer l'heure de la carte obtenue par l'API de Trello avec l'heure actuelle, j'ai eu une erreur lorsque j'ai écrit le code suivant et que j'en ai été accro.

def show_cards_(cards):
    for c in cards:
        print("---------------")
        print("card id   : {id}".format(id=c.id))
        print("card name : {name}".format(name=c.name))
        
        if c.due is not None:
            due = c.due_date
            now = dt.now()
            print("C'est passé" if now > due else "Ça va toujours")

Lorsque j'ai exécuté ce code, j'ai eu l'erreur suivante:

TypeError: can't compare offset-naive and offset-aware datetimes

Il semble que dû et maintenant ne puissent pas être comparés car ils sont respectivement différents pour le décalage natif et pour le décalage.

En regardant de près le contenu, cela ressemblait à ceci.

2017-01-03 10:00:00+00:00    #dû: offset-aware
2017-01-03 22:40:14.709333   #maintenant: offset-native

C'était l'heure utc sensible au décalage que trello a renvoyée.

En python, il semble qu'il sera comparé selon l'un ou l'autre.

Solution

point

Ne mélangez pas «offset-native» et «offset-aware».

Je m'en fichais du tout jusqu'à présent, mais il semble que pytz et python-dateutil prendront soin de moi dans de tels moments.

Comment obtenir l'heure actuelle avec offset natif

>>> from datetime import datetime as dt
>>> print(dt.now())
2017-01-03 22:45:07.334307+09:00

Dans la plupart des cas, c'est ok

Comment obtenir l'heure actuelle avec la prise en compte du décalage

>>> from datetime import datetime as dt
>>> import dateutil.tz
>>> print(dt.now(dateutil.tz.tzlocal()))
2017-01-03 22:47:27.712684+09:00

Vous pouvez fixer le fuseau horaire sur ```Asia / Tokyo``, mais Le fuseau horaire local du système avait l'air cool, alors je l'ai essayé.

Conversion de fuseau horaire (ce qui suit est une histoire tenant compte du décalage)

Obtenir l'heure en UTC

>>> from datetime import datetime as dt
>>> import pytz
>>> now_utc = dt.now(pytz.utc)
>>> print(now_utc)
2017-01-03 14:07:54.861061+00:00

Si vous passez le fuseau horaire en tant que variable à l'habituel `` dt.now () '', cela ressemble à ok.

↓ et

UTC → JST

>>> print(dt.now(pytz.utc).astimezone(pytz.timezone("Asia/Tokyo")))
2017-01-03 23:05:53.765549+09:00

c'est tout.

Accueil! Accueil! Polkadot Stingray et DAOKO sont les meilleurs!

Recommended Posts

Obtenez et convertissez l'heure actuelle dans le fuseau horaire local du système avec python
Obtenez la date et l'heure actuelles en Python, en tenant compte du décalage horaire
Comment obtenir la différence de date et d'heure en secondes avec Python
Déterminez le format de la date et de l'heure avec Python et convertissez-le en Unixtime
[Python] Récupérez les fichiers dans le dossier avec Python
Obtenez le titre de la fenêtre du système X Window en Python
python Obtenir l'heure actuelle
Convertir la date et l'heure zonées en temps Unixtime dans Python2.7
Extraire "date actuelle uniquement" et "date et heure actuelles" avec python datetime.
Convertir le fuseau horaire de la date (décalage horaire) avec Python (à partir de la chaîne)
[Python] Obtenez les nombres dans l'image graphique avec OCR
Convertissez l'image au format .zip en PDF avec Python
Obtenez des résultats au format dict avec Python psycopg2
Obtenir les informations de localisation actuelles et l'agent utilisateur en Python
Obtenez le type MIME en Python et déterminez le format de fichier
[Python] Afficher le temps écoulé en heures, minutes et secondes (00:00:00)
Commerce du système à partir de Python3: obtenez le dernier code de programme
Obtenez le chemin du bureau en Python
Obtenez la météo avec les requêtes Python
Obtenez la météo avec les requêtes Python 2
Obtenez le chemin du script en Python
Obtenez de manière récursive la liste Excel dans un dossier spécifique avec python et écrivez-la dans Excel.
Obtenez le chemin du bureau en Python
Obtenez le nom d'hôte en Python
Remarque Python: obtenez le mois en cours
Démarrez avec Python avec Blender
Comment est le progrès? Continuons le boom ?? en Python
[Python3] Enregistrez la matrice de moyenne et de covariance dans json avec les pandas
Obtenez le titre et la date de livraison de Yahoo! News en Python
Obtenez des données supplémentaires vers LDAP avec python
[Python] Récupère le nom de la variable avec str
Afficher Python 3 dans le navigateur avec MAMP
Obtenir l'heure actuelle JST en notation ISO8601
Gérer les "années et mois" en Python
MongoDB avec Python pour la première fois
Commençons avec TopCoder en Python (version 2020)
Obtenir la liste de codes EDINET en Python
Remplissez la chaîne avec des zéros en python et comptez certains caractères de la chaîne
Obtenez une liste des packages installés dans l'environnement actuel avec python
J'ai défini des variables d'environnement dans Docker et je les ai affichées en Python.
Exemple de code pour obtenir oauth_token et oauth_token_secret de l'API Twitter en Python 2.7
Obtenez des visites d'articles et des likes avec l'API Qiita + Python
Obtenez et estimez la forme de la tête en utilisant Dlib et OpenCV avec python
Obtenez une instance datetime à tout moment de la journée en Python
Obtenez des données de séries chronologiques de k-db.com avec Python
Convertissez des PDF en images en masse avec Python
Visualisez les informations du capteur d'accélération de la carte micro-ordinateur en temps réel avec mbed + Python
Récupérer l'appelant d'une fonction en Python
[Automation] Extraire le tableau en PDF avec Python
Utilisez Logger avec Python pour le moment
Créons un système de réception simple avec le framework sans serveur Python Chalice et Twilio
Obtenir l'heure Unix de l'heure spécifiée par JST quel que soit le fuseau horaire du serveur avec Python
À propos de la différence entre "==" et "is" en python
Ce que j'ai fait quand je suis resté coincé dans le délai avec lambda python
Obtenez toutes les entrées standard utilisées dans la programmation paiza et compétition avec int (python)
Comment obtenir les fichiers dans le dossier [Python]
Résolution du modèle Lorenz 96 avec Julia et Python
Archivez et compressez tout le répertoire avec python