[PYTHON] J'ai essayé de convertir la chaîne datetime <-> avec tzinfo en utilisant strftime () et strptime ()

environnement

Python 2.7.10

Matériel de référence

8.1. Datetime - types de date et d'heure de base

Utilisez strftime pour obtenir la chaîne datetime contenant tzinfo

>>> from datetime import datetime
>>> import pytz
>>> 
>>> jst = pytz.timezone('Japan')
>>> jst_datetime = datetime.now().replace(tzinfo=jst)
>>> print jst_datetime
2015-11-12 16:09:18.544266+09:00
>>> jst_datetime_str = datetime.strftime(jst_datetime, '%Y-%m-%d %H:%M:%S %z')
>>> print jst_datetime_str
2015-11-12 16:09:18 +0900
>>> datetime.strftime(jst_datetime, '%Y-%m-%d %H:%M:%S %Z')
'2015-11-12 16:09:18 JST'

Il est possible de sortir une chaîne de caractères datetime avec tzinfo.

Obtenir datetime avec tzinfo à partir de la chaîne datetime en utilisant strptime

>>> print jst_datetime_str
2015-11-12 16:09:18 +0900
>>> datetime.strptime(jst_datetime_str, '%Y-%m-%d %H:%M:%S %z')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/lib/python2.7/_strptime.py", line 317, in _strptime
    (bad_directive, format))
ValueError: 'z' is a bad directive in format '%Y-%m-%d %H:%M:%S %z'
>>> 

J'ai essayé d'obtenir le datetime avec timsezone en utilisant la chaîne datetime avec tzinfo, mais j'ai eu une erreur.

ValueError: 'z' is a bad directive in format '%Y-%m-%d %H:%M:%S %z'

J'obtiens une erreur indiquant que le spécificateur '% z's est dans un mauvais format.

Le résultat de diverses enquêtes http://stackoverflow.com/questions/2609259/converting-string-to-datetime-object-in-python

Il semble que% z n'est pas pris en charge dans python2.7. Cela semble fonctionner avec python3.2. Je ne peux pas changer la version, alors essayez une autre méthode

>>> jst_datetime_str = datetime.strftime(jst_datetime, '%Y-%m-%d %H:%M:%S %Z')
>>> print jst_datetime_str
2015-11-12 16:09:18 JST
>>> datetime.strptime(jst_datetime_str, '%Y-%m-%d %H:%M:%S %Z')
datetime.datetime(2015, 11, 12, 16, 9, 18)

J'ai essayé d'utiliser% Z, mais cette fois, j'obtiens un datetime sans tzinfo, bien qu'aucune erreur ne se produise.

Recherche d'autres http://nekoya.github.io/blog/2013/06/21/python-datetime/

Cette personne ne pouvait pas non plus utiliser% Z, donc il semble qu'il a utilisé "replace (tzinfo = pytz.utc)" pour le définir. Il semble impossible de convertir à l'aide d'un spécificateur, j'ai donc essayé de le gérer en poussant

>>> from datetime import datetime
>>> import pytz
>>> 
>>> jst = pytz.timezone('Japan')
>>> jst_datetime = datetime.now().replace(tzinfo=jst)
>>> print jst_datetime
2015-11-12 16:54:19.564920+09:00
>>> jst_datetime_str = datetime.strftime(jst_datetime, '%Y-%m-%d %H:%M:%S') + ' ' + jst_datetime.tzinfo.zone
>>> print jst_datetime_str
2015-11-12 16:54:19 Japan
>>> zone = jst_datetime_str.split(' ')[-1]
>>> print zone
Japan
>>> datetime_str = ' '.join(jst_datetime_str.split(' ')[:2])
>>> print datetime_str
2015-11-12 16:54:19
>>> datetime.strptime(datetime_str, '%Y-%m-%d %H:%M:%S').replace(tzinfo=pytz.timezone(zone))
datetime.datetime(2015, 11, 12, 16, 54, 19, tzinfo=<DstTzInfo 'Japan' JST+9:00:00 STD>)

Comme ça.

Résumé

-Dans python2.7, les spécificateurs '% Z' et '% z' ne peuvent pas être utilisés dans strptime. ・ Cependant, il peut être utilisé normalement avec strftime. ・ Je ne l'ai pas confirmé plus tard, mais il semble que python3.2 puisse être utilisé avec strptime. ・ Honnêtement, cela ressemble à une force, mais je me demande s'il existe un autre bon moyen.

Recommended Posts

J'ai essayé de convertir la chaîne datetime <-> avec tzinfo en utilisant strftime () et strptime ()
Python datetime Comment calculer des dates et convertir des chaînes strftime, strptime [Definitive Edition]
J'ai essayé de lire et d'enregistrer automatiquement avec VOICEROID2 2
J'ai essayé d'implémenter et d'apprendre DCGAN avec PyTorch
J'ai essayé de lire et d'enregistrer automatiquement avec VOICEROID2
J'ai essayé d'implémenter Grad-CAM avec keras et tensorflow
[Python] Convertit l'affichage de l'heure (type str) en utilisant "" "et" '"en secondes (type float) avec datetime et timedelta
J'ai essayé de prédire et de soumettre les survivants du Titanic avec Kaggle
J'ai essayé d'obtenir les informations du Web en utilisant "Requests" et "lxml"
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
J'ai essayé de visualiser les signets volant vers Slack avec Doc2Vec et PCA
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé d'utiliser PyEZ et JSNAPy. Partie 4: Automatisez la configuration du FAI avec PyEZ et JSNAPy
J'ai essayé de créer des taureaux et des vaches avec un programme shell
J'ai essayé de créer une application todo en utilisant une bouteille avec python
J'ai essayé de détecter facilement les points de repère du visage avec python et dlib
J'ai essayé d'utiliser Amazon SQS avec django-celery
J'ai essayé d'utiliser Azure Speech to Text.
J'ai essayé d'implémenter Autoencoder avec TensorFlow
J'ai essayé de visualiser AutoEncoder avec TensorFlow
J'ai essayé de commencer avec Hy
J'ai essayé d'utiliser du sélénium avec du chrome sans tête
J'ai essayé d'utiliser PyEZ et JSNAPy. Partie 2: J'ai essayé d'utiliser PyEZ
J'ai essayé d'implémenter CVAE avec PyTorch
J'ai essayé de résoudre TSP avec QAOA
J'ai essayé de créer un programme qui convertit les nombres hexadécimaux en nombres décimaux avec python
J'ai essayé d'exprimer de la tristesse et de la joie face au problème du mariage stable.
Mayungo's Python Learning Episode 6: J'ai essayé de convertir une chaîne de caractères en nombre
J'ai essayé d'apprendre l'angle du péché et du cos avec le chainer
J'ai essayé d'extraire et d'illustrer l'étape de l'histoire à l'aide de COTOHA
J'ai créé un exemple pour accéder à Salesforce en utilisant Python et Bottle
J'ai essayé de mettre à jour le calendrier Google avec des rendez-vous CSV à l'aide de Python et de l'API Google
J'ai essayé de contrôler la bande passante et le délai du réseau avec la commande tc
J'ai essayé de prédire l'année prochaine avec l'IA
J'ai essayé de notifier la mise à jour de "Hameln" en utilisant "Beautiful Soup" et "IFTTT"
J'ai essayé d'utiliser PyEZ et JSNAPy. Partie 1: Aperçu
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
J'ai essayé d'implémenter la lecture de Dataset avec PyTorch
J'ai essayé d'utiliser lightGBM, xg boost avec Boruta
J'ai essayé le web scraping en utilisant python et sélénium
J'ai essayé d'apprendre le fonctionnement logique avec TF Learn
J'ai essayé de déplacer GAN (mnist) avec keras
J'ai essayé la détection d'objets en utilisant Python et OpenCV
J'ai essayé de sauvegarder les données avec discorde
J'ai essayé d'utiliser Java avec Termux en utilisant Termux Arch, mais cela n'a pas fonctionné
J'ai essayé de détecter rapidement un mouvement avec OpenCV
J'ai essayé d'intégrer Keras dans TFv1.1
J'ai essayé de synthétiser des fichiers WAV en utilisant Pydub.
J'ai essayé d'utiliser la bibliothèque Python "pykakasi" qui peut convertir des kanji en romaji.
Programmation Python: j'ai essayé d'obtenir (l'exploration) des articles de presse en utilisant Selenium et BeautifulSoup4
J'ai essayé de jouer en connectant PartiQL et MongoDB
J'ai essayé la différenciation jacobienne et partielle avec python
J'ai essayé d'obtenir des données CloudWatch avec Python
J'ai essayé d'utiliser mecab avec python2.7, ruby2.3, php7
J'ai essayé la synthèse de fonctions et le curry avec python
Trois choses auxquelles j'étais accro lors de l'utilisation de Python et MySQL avec Docker