Python DateTime, TimeDelta, Strftime(Format) cu Exemple
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โ O clasฤ abstractฤ pentru tratarea 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.
Aceste instrucศiuni de import sunt elemente de funcศionalitate predefinite รฎn Python 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 Python. Nu scriem codul pentru aceastฤ funcศionalitate de datฤ, din pฤcate, doar รฎl importฤm pentru uzul nostru
Etapa 2) รn continuare, creฤm o instanศฤ a obiectului datฤ.
Etapa 3) Apoi, imprimฤm data ศi rulฤm codul.
Ieศirea este cea aศteptatฤ.
Imprimaศi data folosind date.today()
date.today funcศia are mai multe proprietฤศi asociate cu ea. Putem imprima o zi/lunฤ/an individualฤ ศi multe alte lucruri
Sฤ vedem un exemplu
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 zilelor sฤptฤmรขnii care รฎncepe cu Monday ca 0 ศi duminica 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.
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.
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 de timp.
Sฤ presupunem cฤ vrem sฤ tipฤrim 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.
Bine, aศa cฤ puteศi vedea cฤ aici am data ศi ora. ศi apoi urmฤtorul rรขnd, am doar timpul de la sine
Pas 3) Vom aplica indexatorul nostru pentru zilele sฤptฤmรขnii la arrayList pentru a ศti care zi este astฤzi
- Operatorului รฎn zilele lucrฤtoare (wd) i se atribuie numฤrul de la numฤrul (0-6) รฎn funcศie de ziua curentฤ a sฤptฤmรขnii. Aici am declarat matricea listei pentru zile (luni, marศi, miercuri... duminicฤ).
- 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โ.
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()
De acum, am รฎnvฤศat cum sฤ folosim data, ora ศi data 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.
- 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
Pas 3) Funcศia Strf poate declara data, ziua, luna ศi anul separat. De asemenea, cu mici modificฤri ale codului de control รฎn funcศia strftime puteศi formata stilul textului.
รn interiorul funcศiei strftime dacฤ รฎnlocuiศi (%a) cu A majusculฤ, adicฤ (%A), rezultatul va fi tipฤrit ca โZiuaโ รฎn loc de doar o abreviere โVineriโ.
Pas 4) Cu ajutorul funcศiei โStrftimeโ putem prelua ศi ora sistemului local, data sau ambele.
- %C- indicฤ data ศi ora localฤ
- %x- indicฤ data localฤ
- %X- indicฤ ora localฤ
ร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.
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 prelua obiectul cu o anumitฤ datฤ ศi orฤ delta. Obiectul timedelta acceptฤ operaศii matematice precum adunฤri, scฤderi, รฎ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 trecut. Sฤ vedem un 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
- Scrieศi declaraศia de import pentru timedelta
- Acum scrieศi codul pentru a imprima obiectul din time delta, aศa cum se aratฤ รฎn captura de ecran
- Rulaศi codul. Timedelta reprezintฤ un interval de 365 de zile, 8 ore ศi 15 minute ศi tipฤreศte acelaศi
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
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.
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
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
- if 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
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
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)
Rezumat
Pentru manipularea datelor ศi orelor รฎn moduri simple ศi complexe, modulul datetime furnizeazฤ diferite clase sau categorii, cum ar fi
- 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โ O clasฤ abstractฤ pentru tratarea fusurilor orare
Utilizarea obiectelor datetime
- Importarea obiectelor datetime รฎnainte de a executa codul este obligatorie
- Utilizarea funcศiei date.today pentru imprimarea datei/lunii/anului individual, precum ศi pentru indexarea zilei
- Folosind obiectul date.time pentru a obศine timpul รฎn ore, minute, secunde ศi milisecunde
Formatarea Time-Out cu โfuncศia de timp str fโ
- Utilizaศi โfuncศia str f timeโ pentru a schimba formatul anului
- Tipฤriศi separat ziua, data, luna ศi anul,
- Timp de apel pentru orice format 12 ore sau 24 de ore
Obiecte Timedelta
- Cu obiectele timedelta, puteศi estima timpul atรขt pentru viitor, cรขt ศi pentru trecut
- Calculaศi numฤrul total de zile rฤmase pentru ziua specialฤ (ziua de naศtere) din ora curentฤ
- Calculaศi numฤrul total de zile trecute pentru ziua specialฤ (ziua de naศtere) din ora curentฤ



















