[Note] Créez une classe de fuseau horaire sur une ligne avec python

Lors de l'écriture d'un petit code python, je pense qu'il est courant de traiter la date et l'heure. À ce moment-là, j'avais l'impression que le fuseau horaire était nécessaire et qu'il était difficile d'installer pytz à chaque fois, j'ai donc créé une classe de fuseau horaire (classe d'héritage tzinfo) sur une seule ligne.

Code mémo

Code 1 ligne

Code 1 ligne.


JST = type('JST', (__import__('datetime').tzinfo,), {'_tzname': 'JST', '_zone': 'Tokyo', '_utcoffset': __import__('datetime').timedelta(hours=9), '__module__': 'timezone', '__str__': lambda self: self._zone, '__repr__': lambda self: '<tzinfo {} {} {}>'.format(self._zone, self._utcoffset, self._tzname), 'utcoffset': lambda self, dt: self._utcoffset, 'dst': lambda self, dt: __import__('datetime').timedelta(0), 'tzname': lambda self, dt: self._tzname})

code conforme pep8

code conforme pep8.


JST = type(
    'JST',
    (__import__('datetime').tzinfo,),
    {'_tzname': 'JST',
     '_zone': 'Tokyo',
     '_utcoffset': __import__('datetime').timedelta(hours=9),
     '__module__': 'timezone',
     '__str__': lambda self: self._zone,
     '__repr__': lambda self: '<tzinfo {} {} {}>'.format(
         self._zone, self._utcoffset, self._tzname),
     'utcoffset': lambda self, dt: self._utcoffset,
     'dst': lambda self, dt: __import__('datetime').timedelta(0),
     'tzname': lambda self, dt: self._tzname}
)

Convertir la date et l'heure JST en heure UTC

utc struct avec le fuseau horaire jst ajouté à datetime_Faire du temps ou de l'époque_Obtenir du temps.


>>> JST = type('JST', (__import__('datetime').tzinfo,), {'_tzname': 'JST', '_zone': 'Tokyo', '_utcoffset': __import__('datetime').timedelta(hours=9), '__module__': 'timezone', '__str__': lambda self: self._zone, '__repr__': lambda self: '<tzinfo {} {} {}>'.format(self._zone, self._utcoffset, self._tzname), 'utcoffset': lambda self, dt: self._utcoffset, 'dst': lambda self, dt: __import__('datetime').timedelta(0), 'tzname': lambda self, dt: self._tzname})
>>>
>>> import datetime
>>> import calendar
>>>
>>> #Génération de classe héritée par JST tzinfo
>>> jst = JST()
>>> jst
<tzinfo Tokyo 9:00:00 JST>
>>>
>>> #Ajouter tzinfo avec remplacer
>>> jst_datetime = datetime.datetime.now().replace(tzinfo=JST())
>>> jst_datetime
datetime.datetime(2016, 12, 16, 18, 54, 6, 749383, tzinfo=<tzinfo Tokyo 9:00:00 JST>)
>>>
>>> #struct utc de jst datetime_Obtenir du temps
>>> jst_datetime.utctimetuple()
time.struct_time(tm_year=2016, tm_mon=12, tm_mday=16, tm_hour=9, tm_min=54, tm_sec=6, tm_wday=4, tm_yday=351, tm_isdst=0)
>>>
>>> #Obtenir l'heure de l'époque à partir de jst datetime
>>> calendar.timegm(jst_datetime.utctimetuple())
1481882046

Épilogue

Cette fois, j'ai créé le fuseau horaire japonais JST, mais vous pouvez également créer un autre fuseau horaire avec l'heure d'été en modifiant "_utcoffset", "_zone", "_tzname" et "dst method".

Si vous souhaitez écrire un petit code dans le fuseau horaire, veuillez l'utiliser.

Recommended Posts

[Note] Créez une classe de fuseau horaire sur une ligne avec python
Créer un décorateur de fonction Python avec Class
Créer un répertoire avec python
Créez un environnement virtuel avec Python!
[Python] Hériter d'une classe avec des variables de classe
Créez une image factice avec Python + PIL.
[Python] Créez un environnement virtuel avec Anaconda
Créons un groupe gratuit avec Python
Créer un compteur de fréquence de mots avec Python 3.4
Créer un cadre avec un arrière-plan transparent avec tkinter [Python]
Créer un module Python
Créer un LINE BOT avec Minette pour Python
Créer un environnement virtuel avec conda avec Python
Créer une page qui se charge indéfiniment avec python
Vous pouvez facilement créer une interface graphique même avec Python
Créer un environnement de construction python3 avec Sublime Text3
Créer une barre de couleurs avec Python + Qt (PySide)
Étapes pour créer un bot Twitter avec Python
Python: créer une classe qui prend en charge l'affectation décompressée
Créer un arbre de décision à partir de 0 avec Python (1. Présentation)
Créer une nouvelle page en confluence avec Python
Créer un widget avec une couleur spécifiée avec Python + Qt (PySide)
Créer un fichier au format Photoshop (.psd) avec python
Créer un environnement Python
Facile à créer une application console Python avec Click
[Python] Générer ValueObject avec un constructeur complet à l'aide de classes de données
Créez un environnement de développement python avec vagrant + ansible + fabric
Créer une couche pour AWS Lambda Python dans Docker
[python] Créez un tableau de dates avec des incréments arbitraires avec np.arange
Remarques sur l'accélération du code Python avec Numba
[Python] Comment créer un histogramme bidimensionnel avec Matplotlib
[Python] Créez un fichier de distribution pour le programme Tkinter avec cx_Freeze
Créez un faux serveur Minecraft en Python avec Quarry
Créer un fichier CAO 2D ".dxf" avec python [ezdxf]
Créer un dictionnaire en Python
Créer un gif 3D avec python3
Créer une page d'accueil avec django
[Note] Faites fonctionner MongoDB avec Python
Créer un tableau numpy python
Faites une loterie avec Python
Une note sur [python] __debug__
Une note sur l'utilisation de l'API Facebook avec le SDK Python
[Python] Créez un écran de spécification de chemin de fichier et de dossier avec tkinter
Créez un bot Mastodon avec une fonction pour répondre automatiquement avec Python
Créer un compte enfant de connect with Stripe en Python
Créons un script qui s'enregistre avec Ideone.com en Python.
Probablement le moyen le plus simple de créer un pdf avec Python 3
Créons un diagramme PRML avec Python, Numpy et matplotlib.
[python] Remarques lors de la tentative d'utilisation de numpy avec Cython
Créez un Twitter BOT avec le SDK GoogleAppEngine pour Python
Créez un outil d'analyse vidéo simple avec python wxpython + openCV
Créez un environnement de développement Python simple avec VSCode et Docker Desktop
Créer un message correspondant à la localisation avec la chaîne de traduction python
[Python] Créer un écran pour le code d'état HTTP 403/404/500 avec Django
[Note] Une histoire sur la tentative de remplacer une méthode de classe avec deux barres inférieures dans la série Python 3.
[Python] Qu'est-ce qu'une instruction with?