Python | Conversione del fuso orario

| | | | | | | |

Gli elementi di data e ora Python possono essere ingenui o attenti. Nel caso in cui l`elemento datetime abbia tzinfo, a questo punto lo sa. Qualcos`altro, la data e l`ora sono ingenue. Per chiarire il fuso orario di un oggetto datetime, definire una classe base astratta, tzinfo. In ogni caso, la libreria Python datetime caratterizza semplicemente la classe base concettuale per tzinfo e lascia ad altri il compito di implementare effettivamente la creazione di tzinfo. È qui che arriva il modulo tz dateutil — offre tutto ciò che serve per cambiare i fusi orari a monte dalle informazioni sul fuso orario del tuo sistema operativo.

Impostazione:

Usa pip o easy_install dateutil per installare. Assicurati che il sistema operativo disponga di dati sul fuso orario.

Su Linux, di solito si trovano in / usr / share / zoneinfo e il pacchetto Ubuntu si chiama tzdata. Nel caso del numero di file e directory in /usr/share/zoneinfo , come America / ed Europa /, allora è pronto per procedere.

Ottieni oggetto UTC tzinfo — chiamando tz.tzutc()

da dateutil import tz

tz.tzutc()

tzutc()

L`offset è 0 chiamando il utcoffset() con un oggetto data/ora UTC.


import datetime

tz.tzutc (). utcoffset (datetime.datetime.utcnow ())

datetime.timedelta (0) 

Passa il percorso al file timezone in gettz() per ottenere oggetti tzinfo per altri fusi orari.


tz.gettz ( `Stati Uniti / Pacifico` )

< /table>

tzfile (`/ usr / share / zoneinfo / US / Pacific`) 

< / p>

tz.gettz ( `Europa / Parigi` )

tzfile(`/usr/share/zoneinfo/Europe/Paris` )

tz.gettz ( `USA / Pacifico ` ). utcoffset (datetime.datetime.utcnow ())

datetime.timedelta (-1, 61200) 

Per modificare un elemento di data e ora diverso da UTC a UTC, è necessario ricordare il fuso orario. Se provi a modificare l`ora attendibile in UTC, otterrai un`eccezione ValueError. Per ricordare l`ingenuo fuso orario datetime, in pratica chiami la strategia replace() con il tzinfo che desideri. Una volta che l`elemento datetime ha tzinfo, a quel punto l`UTC può essere modificato chiamando il metodo astimezone() con tz.tzutc() .

< / p>

abc = tz.gettz ( `Stati Uniti / Pacifico` )

dat = datetime.datetime ( 2010 , 9 , 25 , 10 , 36 )

dat.tzinfo
dat.astimezone (tz. tzutc ())

Traceback (ultima chiamata più recente): File "/u sr/lib/python2.6/doctest.py", riga 1228, in __run compileflags, 1) nel file test.globs "", riga 1, in dat.astimezone (tz.tzutc ()) ValueError: astimezone () non può essere applicato a un datetime ingenuo 

dat.replace (tzinfo = abc)

datetime.datetime (2010, 9, 25, 10, 36, tzinfo = tzfile (`/ usr / share / zoneinfo / US / Pacific`)) 

C`è tutto dietro il lavoro —

  • Gli elementi tzutc e tzfile sono due sottoclassi di tzinfo.
  • Tutto sommato, conoscono l`offset UTC corretto per cambiare il fuso orario (0 per tzutc) .
  • L`elemento tzfile comprende come scansionare i documenti zoneinfo della struttura di lavoro per le informazioni fondamentali sul contrappeso.
  • La strategia replace() per l`elemento nta datetime fa ciò che il nome — sostituisce le qualità.
  • Quando un datetime ha un tzinfo, la strategia astimezone() molto probabilmente prenderà in considerazione il tempo usando i contrappesi UTC e quindi sposterà l`attuale tzinfo con un nuovo tzinfo.

Codice: passa l`argomento della parola chiave tzinfos al parser dateutil per rilevare i fusi orari non riconosciuti


parser.parse ( `Mercoledì 4 agosto 2010 alle 18:30 (CDT)` ,

fuzzy = True )

datetime. datetime (2010, 8, 4, 18, 30) 

tzinfos = { `CDT` : tz.gettz ( ` USA / Central` )}

parser.parse ( `Mercoledì 4 agosto 2010 alle 18:30 (CDT)` ,

fuzzy = True , tzinfos = tzinfos)

datetime.datetime (2010, 8, 4, 18, 30, tzinfo = tzfile (`/ usr / share / zoneinfo / US / Central`)) 

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method