Python DateTime, TimeDelta, Strftime(Format) cu Exemple

โšก Rezumat inteligent

Python datetime, รฎmpreunฤƒ cu clasele date, time ศ™i timedelta, gestioneazฤƒ datele, orele ศ™i intervalele ca obiecte. Modulul datetime formateazฤƒ ieศ™irea cu strftime(), analizeazฤƒ ศ™iruri de caractere ศ™i calculeazฤƒ momente viitoare sau trecute folosind aritmetica timedelta.

  • ๐Ÿ”˜ Cinci clase: Modulul datetime grupeazฤƒ clasele date, time, datetime, timedelta ศ™i tzinfo pentru lucrul cu date ศ™i ore.
  • โ˜‘๏ธ Valori actuale: datetime.now() ศ™i date.today() returneazฤƒ data ศ™i ora curente, inclusiv numฤƒrul zilei sฤƒptฤƒmรขnii.
  • โœ… Formatare: Funcศ›ia strftime() transformฤƒ o valoare datฤƒ/orฤƒ รฎn text lizibil folosind coduri de control precum %Y, %A ศ™i %H.
  • ๐Ÿงช Delta de timp: Un obiect timedelta mฤƒsoarฤƒ o duratฤƒ ศ™i prezice date viitoare sau trecute prin adunare ศ™i subdivizare.tracTION.
  • ๐Ÿ› ๏ธ Directivele: Aceleaศ™i coduri de control utilizeazฤƒ metoda strftime() pentru ieศ™ire ศ™i metoda strptime() pentru citirea unui ศ™ir de caractere รฎnapoi รฎntr-o funcศ›ie datetime.
  • ๐Ÿค– Fluxuri de lucru bazate pe inteligenศ›a artificialฤƒ: Conductele de รฎnvฤƒศ›are automatฤƒ obศ›in caracteristici de datฤƒ ศ™i orฤƒ, cum ar fi ziua sฤƒptฤƒmรขnii ศ™i ora, pentru modelele de serii temporale.

Python DateTime

In Python, data, ora si dataora Clasele oferฤƒ o serie de funcศ›ii pentru a gestiona date, ore ศ™i intervale de timp. Data ศ™i data ศ™i ora รฎn Python sunt obiecte, deci atunci cรขnd le manipulaศ›i, manipulaศ›i de fapt obiecte ศ™i nu ศ™iruri de caractere sau marcaje temporale. Ori de cรขte ori manipulaศ›i date sau ore, trebuie sฤƒ importaศ›i modulul datetime.

Clasele datetime รฎn Python sunt clasificate รฎn 5 clase principale.

  • data โ€“ Manipulaศ›i doar data (lunฤƒ, zi, an)
  • timp โ€“ Timp independent de zi (orฤƒ, minut, secundฤƒ, microsecundฤƒ)
  • datetime โ€“ Combinaศ›ie de timp ศ™i datฤƒ (lunฤƒ, zi, an, orฤƒ, secundฤƒ, microsecundฤƒ)
  • timedeltaโ€” O duratฤƒ de timp utilizatฤƒ pentru manipularea datelor
  • tzinfo โ€” Un abdomentracclasa t pentru gestionarea fusurilor orare

Cum sฤƒ utilizaศ›i clasa Date ศ™i DateTime

Etapa 1) รŽnainte de a rula codul pentru formatul datetime รฎn Python, este important sฤƒ importaศ›i Python module date ศ™i orฤƒ, aศ™a cum se aratฤƒ รฎn captura de ecran de mai jos.

Utilizaศ›i clasa Date ศ™i DateTime

Aceste instrucศ›iuni de import sunt elemente de funcศ›ionalitate predefinite รฎn Python o bibliotecฤƒ care vฤƒ permite sฤƒ manipulaศ›i datele ศ™i orele, fฤƒrฤƒ a scrie niciun cod.

Luaศ›i รฎn considerare urmฤƒtoarele puncte รฎnainte de a executa Python cod de format datetime

from datetime import date

Aceastฤƒ linie spune Python interpret pentru a importa clasa de date din modulul datetime รฎn PythonNu scriem codul pentru aceastฤƒ funcศ›ionalitate de datฤƒ, ci pur ศ™i simplu รฎl importฤƒm pentru uzul nostru.

Imprimaศ›i data folosind date.today()

Funcศ›ia date.today() are mai multe proprietฤƒศ›i asociate. Putem afiศ™a ziua/luna/anul individual ศ™i multe alte lucruri.

Sฤƒ vedem un exemplu

Imprimaศ›i data folosind date.today()

Numฤƒrul zilei sฤƒptฤƒmรขnii de astฤƒzi

Funcศ›ia date.today() vฤƒ oferฤƒ ศ™i numฤƒrul zilei sฤƒptฤƒmรขnii. Iatฤƒ tabelul cu zilele sฤƒptฤƒmรขnii care รฎncepe cu Monday ca 0 ศ™i duminicฤƒ ca 6.

Zi Numฤƒrul zilei sฤƒptฤƒmรขnii
Monday 0
marลฃi 1
miercuri 2
joi 3
Vineri 4
Sรขmbฤƒtฤƒ 5
Duminicฤƒ 6

Weekday Number este util pentru tablourile al cฤƒror index depinde de Ziua sฤƒptฤƒmรขnii.

Imprimaศ›i data folosind date.today()

Etapa 2) รŽn continuare, creฤƒm o instanศ›ฤƒ a obiectului datฤƒ.

Utilizaศ›i clasa Date ศ™i DateTime

Etapa 3) Apoi, imprimฤƒm data ศ™i rulฤƒm codul.

Utilizaศ›i clasa Date ศ™i DateTime

Rezultatul este conform aศ™teptฤƒrilor.

Python Data ศ™i ora curente: acum() astฤƒzi()

Pas 1) La fel ca ศ™i Date Objects, putem folosi โ€žOBIECTE DATETIMEโ€ in Python. Python obiectele data ศ™i ora oferฤƒ data รฎmpreunฤƒ cu ora รฎn ore, minute, secunde ศ™i milisecunde.

Python Data ศ™i ora curente

Cรขnd executฤƒm codul pentru datetime, acesta oferฤƒ ieศ™irea cu data ศ™i ora curente.

Pas 2) Cu โ€žDATETIME OBJECTโ€, puteศ›i apela ศ™i clasa time. Sฤƒ presupunem cฤƒ vrem sฤƒ afiศ™ฤƒm doar ora curentฤƒ, fฤƒrฤƒ datฤƒ.

t = datetime.time(datetime.now())
  • Importasem clasa de timp. รŽi vom atribui valoarea curentฤƒ a timpului folosind datetime.now()
  • Atribuim valoarea timpului curent variabilei t.

ศ˜i asta รฎmi va oferi doar timpul necesar. Deci hai sฤƒ rulฤƒm acest program.

Python Data ศ™i ora curente

Bine, deci puteศ›i vedea cฤƒ aici am data ศ™i ora. ศ˜i apoi, pe rรขndul urmฤƒtor, am doar ora.

Pas 3) Vom aplica indexorul nostru pentru zilele sฤƒptฤƒmรขnii la lista de matrice a zilei sฤƒptฤƒmรขnii pentru a ศ™ti care zi este astฤƒzi.

  • Operatorul de zile lucrฤƒtoare (wd) primeศ™te un numฤƒr de la (0-6) รฎn funcศ›ie de ziua curentฤƒ a sฤƒptฤƒmรขnii. Aici am declarat matricea listei pentru zile (Lun, Mar, Wedโ€ฆDum).
  • Utilizaศ›i acea valoare a indexului pentru a afla ce zi este. รŽn cazul nostru, este numฤƒrul 2 ศ™i reprezintฤƒ miercuri, aศ™a cฤƒ รฎn rezultat va tipฤƒri โ€žCare este o zi de miercuriโ€.

Python Data ศ™i ora curente

Iatฤƒ codul complet pentru a obศ›ine data ศ™i ora curente folosind datetime acum

from datetime import date
from datetime import time
from datetime import datetime
def main():
    ##DATETIME OBJECTS
    #Get today's date from datetime class
    today=datetime.now()
    #print (today)
    # Get the current time
    #t = datetime.time(datetime.now())
    #print "The current time is", t
    #weekday returns 0 (monday) through 6 (sunday)
    wd=date.weekday(today)
    #Days start at 0 for monday
    days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]
    print("Today is day number %d" % wd)
    print("which is a " + days[wd])

if __name__== "__main__":
    main()

Cum se formateazฤƒ data ศ™i ora ieศ™irii cu Strftime()

Pรขnฤƒ acum, am รฎnvฤƒศ›at cum sฤƒ folosim datetime ศ™i date. obiect รฎn Python. Vom avansa cu un pas mai departe ศ™i vom รฎnvฤƒศ›a cum sฤƒ folosim o funcศ›ie de formatare pentru a formata Ora ศ™i Data.

Pas 1) Mai รฎntรขi vom vedea un pas simplu despre cum sฤƒ formatฤƒm anul. Este mai bine sฤƒ รฎnศ›elegeศ›i cu un exemplu.

Formataศ›i data ศ™i ora ieศ™irii cu Strftime()

  • Am folosit โ€žfuncศ›ia strftimeโ€ pentru formatare.
  • Aceastฤƒ funcศ›ie foloseศ™te diferite cod de control pentru a da o ieศ™ire.
  • Fiecare cod de control seamฤƒnฤƒ cu diferiศ›i parametri, cum ar fi anul, luna, ziua sฤƒptฤƒmรขnii ศ™i data [(%y/%Y โ€“ An), (%a/%A- ziua sฤƒptฤƒmรขnii), (%b/%B-lunฤƒ), (%d โ€“ ziua lunii)] .
  • รŽn cazul nostru, aศ™a este (โ€œ%Yโ€) care seamฤƒnฤƒ cu anul, imprimฤƒ รฎntregul an cu secolul (de exemplu, 2018).

Pas 2) Acum, dacฤƒ รฎnlocuiศ›i (โ€œ%Yโ€) cu minuscule, adicฤƒ (โ€ž%y) ศ™i executaศ›i codul, rezultatul va afiศ™a doar (18) ศ™i nu (2018). Secolul anului nu se va afiศ™a aศ™a cum se aratฤƒ รฎn captura de ecran de mai jos

Formataศ›i data ศ™i ora ieศ™irii cu Strftime()

Pas 3) Funcศ›ia Strf poate declara separat data, ziua, luna ศ™i anul. De asemenea, cu mici modificฤƒri รฎn codul de control din funcศ›ia strftime puteศ›i formata stilul textului.

Formataศ›i data ศ™i ora ieศ™irii cu Strftime()

รŽn cadrul funcศ›iei strftime, dacฤƒ รฎnlocuiศ›i (%a) cu A majusculฤƒ, adicฤƒ (%A), rezultatul va fi afiศ™at ca โ€žFridayโ€ รฎn loc de o simplฤƒ abreviere โ€žFriโ€.

Formataศ›i data ศ™i ora ieศ™irii cu Strftime()

Pas 4) Cu ajutorul funcศ›iei โ€žStrftimeโ€ putem prelua ศ™i ora sistemului local, data sau ambele.

  1. %C- indicฤƒ data ศ™i ora localฤƒ
  2. %x- indicฤƒ data localฤƒ
  3. %X- indicฤƒ ora localฤƒ

Formataศ›i data ศ™i ora ieศ™irii cu Strftime()

รŽn rezultat, puteศ›i vedea rezultatul aศ™a cum vฤƒ aศ™teptaศ›i

Pas 5) โ€žFuncศ›ia strftimeโ€ vฤƒ permite sฤƒ apelaศ›i ora รฎn orice format 24 de ore sau 12 ore.

Formataศ›i data ศ™i ora ieศ™irii cu Strftime()

Doar definind codul de control precum %I/H pentru orฤƒ, % M pentru minut, %S pentru secundฤƒ, se poate apela ora pentru diferite formate

12 ore ora este declaratฤƒ [print now.strftime(โ€œ%I:%M:%S %p)]

24 ore ora este declaratฤƒ [print now.strftime(โ€œ%H:%Mโ€)]

Iatฤƒ codul complet pentru a converti datetime รฎn obiect String.

#
#Example file for formatting time and date output
#
from datetime import datetime
def main():
   #Times and dates can be formatted using a set of predefined string
   #Control codes
      now= datetime.now() #get the current date and time
      #%c - local date and time, %x-local's date, %X- local's time
      print(now.strftime("%c"))
      print(now.strftime("%x"))
      print(now.strftime("%X"))
##### Time Formatting ####
      #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM
      print(now.strftime("%I:%M:%S %p")) # 12-Hour:Minute:Second:AM
      print(now.strftime("%H:%M")) # 24-Hour:Minute

if __name__== "__main__":
    main()

รŽn ce este Timedelta Python?

Timedelta in Python este un obiect care reprezintฤƒ durata. Este folosit รฎn principal pentru a calcula durata dintre douฤƒ date ศ™i ore. De asemenea, este folosit pentru a recupera obiectul cu o anumitฤƒ datฤƒ ศ™i orฤƒ delta. Obiectul timedelta acceptฤƒ operaศ›ii matematice precum adunฤƒri, subunitฤƒศ›i.tracรฎnmulศ›iri, รฎmpฤƒrศ›iri etc.

Cum se utilizeazฤƒ Timedelta Objects

cu Python obiecte timedelta, puteศ›i estima timpul atรขt pentru viitor, cรขt ศ™i pentru trecut. Cu alte cuvinte, este un interval de timp pentru a prezice orice zi, datฤƒ sau orฤƒ specialฤƒ.

Amintiศ›i-vฤƒ cฤƒ aceastฤƒ funcศ›ie nu este pentru tipฤƒrirea orei sau a datei, ci pentru a CALCULA despre viitor sau trecutSฤƒ vedem o Python exemplu timedelta pentru a-l รฎnศ›elege mai bine.

Pas 1) Pentru a rula Timedelta Objects, trebuie sฤƒ declaraศ›i mai รฎntรขi instrucศ›iunea de import ศ™i apoi sฤƒ executaศ›i codul

  1. Scrieศ›i declaraศ›ia de import pentru timedelta
  2. Acum scrieศ›i codul pentru a imprima obiectul din time delta, aศ™a cum se aratฤƒ รฎn captura de ecran
  3. Rulaศ›i codul. Timedelta reprezintฤƒ un interval de 365 de zile, 8 ore ศ™i 15 minute ศ™i tipฤƒreศ™te acelaศ™i

Obiecte Timedelta

Confuz? Urmฤƒtorul pas va ajuta-

Pas 2) Sฤƒ obศ›inem data ศ™i ora de astฤƒzi pentru a verifica dacฤƒ extrasul nostru de import funcศ›ioneazฤƒ bine. Cรขnd codul este executat, se tipฤƒreศ™te data de astฤƒzi, ceea ce รฎnseamnฤƒ cฤƒ declaraศ›ia noastrฤƒ de import funcศ›ioneazฤƒ bine

Obiecte Timedelta

Pas 3) Vom vedea cum putem recupera data peste un an prin obiecte delta. Cรขnd rulฤƒm codul, acesta dฤƒ rezultatul aศ™a cum era de aศ™teptat.

Obiecte Timedelta

Pas 4) Un alt exemplu despre modul รฎn care delta de timp poate fi utilizatฤƒ pentru a calcula data viitoare de la data ศ™i ora curente

Obiecte Timedelta

Pas 5) Sฤƒ ne uitฤƒm la un exemplu mai complex. Aศ™ dori sฤƒ stabilesc cรขte zile au trecut de Anul Nou. Iatฤƒ cum vom proceda

  • Folosind today= date.today() vom obศ›ine data de astฤƒzi
  • ศ˜tim cฤƒ noul an este รฎntotdeauna pe 1-ian, dar anul ar putea fi diferit. Folosind nyd= date(today.year,1,1) stocฤƒm noul an รฎn variabila nyd
  • dacฤƒ nyd < azi: comparฤƒ dacฤƒ data curentฤƒ este mai mare decรขt noul an. Dacฤƒ da, intrฤƒ รฎn bucla while
  • ((today-nyd).days) oferฤƒ diferenศ›a dintre data curentฤƒ ศ™i anul nou รฎn DAYS

Obiecte Timedelta

Rezultatul aratฤƒ cฤƒ โ€žZiua de Anul Nou a trecut deja acum 11 zileโ€.

Iatฤƒ codul de lucru complet

#
# Example file for working with timedelta objects
#
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta

# construct a basic timedelta and print it
print (timedelta(days=365, hours=8, minutes=15))
# print today's date
print ("today is: " + str(datetime.now()))
# print today's date one year from now
print ("one year from now it will be:" + str(datetime.now() + timedelta(days=365)))
# create a timedelta that uses more than one argument
# print (in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4)))
# How many days until New Year's Day?
today = date.today()  # get todays date
nyd = date(today.year, 1, 1)  # get New Year Day for the same year
# use date comparison to see if New Year Day has already gone for this year
# if it has, use the replace() function to get the date for next year
if nyd < today:
    print ("New Year day is already went by %d days ago" % ((today - nyd).days))

Python 2 Exemplu

Urmฤƒtoarele exemple prezintฤƒ aceleaศ™i operaศ›ii de datฤƒ ศ™i orฤƒ scrise pentru Python 2, unde print este o instrucศ›iune ศ™i nu o funcศ›ie. Folosiศ›i aceste versiuni numai atunci cรขnd menศ›ineศ›i versiunile vechi. Python 2 cod.

from datetime import date
from datetime import time
from datetime import datetime
def main():
 	##DATETIME OBJECTS
    #Get today's date from datetime class
	today=datetime.now()
	#print today
	# Get the current time
	#t = datetime.time(datetime.now())
	#print "The current time is", t
	#weekday returns 0 (monday) through 6 (sunday)
        wd = date.weekday(today)
	#Days start at 0 for monday
        days= ["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]
        print "Today is day number %d" % wd
        print "which is a " + days[wd]

if __name__== "__main__":
    main()
#
#Example file for formatting time and date output
#
from datetime import datetime
def main():
   #Times and dates can be formatted using a set of predefined string
   #Control codes
      now= datetime.now() #get the current date and time
      #%c - local date and time, %x-local's date, %X- local's time
      print now.strftime("%c")
      print now.strftime("%x")
      print now.strftime("%X")
##### Time Formatting ####   
      #%I/%H - 12/24 Hour, %M - minute, %S - second, %p - local's AM/PM
      print now.strftime("%I:%M:%S %p") # 12-Hour:Minute:Second:AM
      print now.strftime("%H:%M") # 24-Hour:Minute   

if __name__== "__main__":
    main()
#
# Example file for working with timedelta objects
#
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta

# construct a basic timedelta and print it
print timedelta(days=365, hours=8, minutes=15)
# print today's date
print "today is: " + str(datetime.now())
# print today's date one year from now
print "one year from now it will be:" + str(datetime.now() + timedelta(days=365))
# create a timedelta that uses more than one argument
# print "in one week and 4 days it will be " + str(datetime.now() + timedelta(weeks=1, days=4))
# How many days until New Year's Day?
today = date.today()  # get todays date
nyd = date(today.year, 1, 1)  # get New Year Day for the same year
# use date comparison to see if New Year Day has already gone for this year
# if it has, use the replace() function to get the date for next year
if nyd < today:
    print "New Year day is already went by %d days ago" % ((today - nyd).days)

รŽntrebฤƒri frecvente

Foloseศ™te datetime.strptime(text, format) pentru a analiza un ศ™ir de caractere รฎntr-un obiect datetime. Transmite aceleaศ™i directive pe care le foloseศ™te strftime(), astfel รฎncรขt โ€ž2018-06-29โ€ sฤƒ se citeascฤƒ cu โ€ž%Y-%m-%dโ€. Ca inversฤƒ a lui strftime(), strptime() transformฤƒ textul lizibil de om รฎnapoi รฎntr-un obiect datetime cu care poศ›i calcula.

O valoare datetime fฤƒrฤƒ tzinfo este naivฤƒ; ataศ™area unui fus orar o face conศ™tientฤƒ. Foloseศ™te modulul zoneinfo รฎncorporat (Python 3.9+) sau pachetul pytz pentru a localiza date ศ™i ore, apoi a converti รฎntre zone, astfel รฎncรขt calculele sฤƒ rฤƒmรขnฤƒ corecte รฎn toate regiunile.

Apelaศ›i metoda timestamp() pe o valoare datetime pentru a obศ›ine secundele de la epoca Unix ca numฤƒr cu numฤƒr รฎn numฤƒr float, de exemplu datetime.now().timestamp(). Pentru a merge รฎn direcศ›ia opusฤƒ, datetime.fromtimestamp(value) reconstruieศ™te o valoare datetime dintr-un timestamp Unix.

Ambele returneazฤƒ data ศ™i ora localฤƒ curentฤƒ, dar datetime.now() acceptฤƒ un argument opศ›ional de fus orar, รฎn timp ce datetime.today() nu. Pentru codul care ศ›ine cont de fusul orar, este de preferat datetime.now(tz), astfel รฎncรขt rezultatul sฤƒ aibฤƒ offset-ul corect รฎn loc sฤƒ rฤƒmรขnฤƒ naiv.

Da. Modulul datetime este livrat cu Python, deci nu este necesarฤƒ instalarea PIP. Importaศ›i-l cu โ€žfrom datetime import datetime, date, time, timedeltaโ€ ศ™i clasele date, time, datetime, timedelta ศ™i tzinfo devin disponibile imediat.

Apelaศ›i metoda isoformat() pentru a obศ›ine un ศ™ir standard ISO 8601, cum ar fi โ€ž2018-06-29T08:15:27โ€. Pentru un obiect de tip datฤƒ, aceasta returneazฤƒ โ€žAAAA-LL-ZZโ€. isoformat() nu necesitฤƒ coduri de control, spre deosebire de strftime(), care construieศ™te machete personalizate din directive.

Conductele de รฎnvฤƒศ›are automatฤƒ transformฤƒ marcajele temporale brute รฎn caracteristici precum ziua sฤƒptฤƒmรขnii, ora, luna ศ™i timpul scurs folosind datetime ศ™i timedelta. Aceste caracteristici de date proiectate ajutฤƒ modelele de serii temporale ศ™i sistemele de prognozฤƒ bazate pe inteligenศ›ฤƒ artificialฤƒ sฤƒ detecteze tiparele sezoniere ศ™i ciclice.

Da. Asistenศ›ii GitHub Copilot ศ™i agenศ›ic AI genereazฤƒ ศ™iruri de format strftime(), aritmeticฤƒ timedelta ศ™i conversii de fus orar dintr-un scurt comentariu ศ™i pot explica directive criptice. Rulaศ›i รฎntotdeauna codul sugerat, deoarece gestionarea datelor ศ™i offset-urile sunt uศ™or de greศ™it.

Rezumaศ›i aceastฤƒ postare cu: