Python DatumTid, TidDelta, Strftime(Format) med exempel
Datetime klasser in Python är indelade i 5 huvudklasser.
- datum – Manipulera bara datum (månad, dag, år)
- tid – Tid oberoende av dagen (timme, minut, sekund, mikrosekund)
- datetime – Kombination av tid och datum (månad, dag, år, timme, sekund, mikrosekund)
- tidsdelta— En tidslängd som används för att manipulera datum
- tzinfo— En abstrakt klass för att hantera tidszoner
Hur man använder Datum & DateTime Class
steg 1) Innan du kör koden för datetime-format i Python, är det viktigt att du importerar Python datum och tid moduler som visas i skärmdumpen nedan.
Dessa importsatser är fördefinierade delar av funktionalitet i Python bibliotek som låter dig manipulera datum och tider, utan att skriva någon kod.
Tänk på följande punkter innan du kör Python formatkod för datum och tid
from datetime import date
Denna rad berättar för Python tolk för att importera datumklassen från datetime-modulen Python. Vi skriver inte koden för denna datumfunktionalitet, men importerar bara den för vår användning
steg 2) Därefter skapar vi en instans av datumobjektet.
steg 3) Därefter skriver vi ut datumet och kör koden.
Resultatet är som förväntat.
Skriv ut datum med date.today()
date.today
Funktionen har flera egenskaper associerade med sig. Vi kan skriva ut enskild dag/månad/år och mycket annat
Låt oss se ett exempel
Dagens veckodagsnummer
Funktionen date.today() ger dig också veckodagsnumret. Här är veckodagstabellen som börjar med Monday som 0 och söndag som 6
Dag | WeekDay Number |
---|---|
Monday | 0 |
Tisdag | 1 |
Onsdag | 2 |
Torsdag | 3 |
Fredag | 4 |
lördag | 5 |
Söndag | 6 |
Weekday Number är användbart för arrayer vars index är beroende av veckodagen.
Python Aktuellt datum och tid: now() today()
Steg 1) Liksom Date Objects kan vi också använda "DATUMTIDSOBJEKT" in Python. Python datum- och tidsobjekt ger datum tillsammans med tid in timmar, minuter, sekunder och millisekunder.
När vi kör koden för datetime, ger den utdata med aktuellt datum och tid.
Steg 2) Med "DATETIME OBJECT" kan du även ringa tidsklass.
Anta att vi bara vill skriva ut aktuell tid utan datum.
t = datetime.time(datetime.now())
- Vi hade importerat tidsklassen. Vi kommer att tilldela det det aktuella värdet av tiden med datetime.now()
- Vi tilldelar värdet på den aktuella tiden till variabeln t.
Och detta kommer att ge mig bara tid. Så låt oss köra det här programmet.
Okej, så du kan se att här har jag datum och tid. Och sedan nästa rad, jag har bara tiden för sig själv
Steg 3) Vi kommer att använda vår veckodagsindexerare på vår veckodags arrayList för att veta vilken dag som är idag
- Weekdays operator (wd) tilldelas numret från (0-6) nummer beroende på vad den aktuella veckodagen är. Här förklarade vi listans array för dagar (mån, tis, ons...sön).
- Använd det indexvärdet för att veta vilken dag det är. I vårt fall är det #2, och det representerar onsdag, så i utgången kommer det att skrivas ut "Vilket är en onsdag."
Här är den kompletta koden för att få aktuellt datum och tid med datetime nu
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()
Hur man formaterar datum och tid med Strftime()
Från och med nu har vi lärt oss hur man använder datetime och datum objekt i Python. Vi kommer att gå ett steg längre och lära oss hur man använder en formateringsfunktion för att formatera tid och datum.
Steg 1) Först kommer vi att se ett enkelt steg för hur man formaterar året. Det är bättre att förstå med ett exempel.
- Vi använde "strftime funktion” för formatering.
- Denna funktion använder olika kontrollkod att ge en utgång.
- Varje kontrollkod liknar olika parametrar som år, månad, veckodag och datum [(%y/%Y – År), (%a/%A- veckodag), (%b/%B- månad), (%d – dag i månaden)] .
- I vårt fall är det så ("%Y") som liknar årtal, den skriver ut hela året med århundradet (t.ex. 2018).
Steg 2) Om du nu ersätter (“%Y”) med gemener, dvs (“%y) och exekverar koden kommer utdata endast att visa (18) och inte (2018). Årets århundrade kommer inte att visas som visas i skärmdumpen nedan
Steg 3) Strf-funktionen kan deklarera datum, dag, månad och år separat. Även med små ändringar i kontrollkoden i strftime-funktionen kan du formatera textens stil.
Inuti strftime-funktionen om du ersätter (%a) med stort A, dvs (%A), kommer resultatet att skrivas ut som "Firday" istället för bara en förkortning "Fri".
Steg 4) Med hjälp av "Strftime"-funktionen kan vi även hämta lokal systemtid, datum eller båda.
- %C- indikerar lokalt datum och tid
- %x- anger det lokala datumet
- %X- anger lokal tid
I utgången kan du se resultatet som förväntat
Steg 5) "Strftime-funktionen" låter dig anropa tiden i valfritt format 24 timmar eller 12 timmar.
Bara genom att definiera kontrollkod som %I/H för timme, % M för minut, %S för sekund, kan man anropa tid för olika format
12 timmar tiden är deklarerad [print now.strftime(“%I:%M:%S %p) ]
24 timmar tiden är deklarerad [print now.strftime(“%H:%M”)]
Här är den kompletta koden för att konvertera datetime till String-objekt.
# #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()
Vad är Timedelta i Python?
Tidsdelta in Python är ett objekt som representerar varaktigheten. Den används främst för att beräkna varaktigheten mellan två datum och tider. Den används också för att hämta objektet med visst deltadatum och tid. Timedelta-objektet stöder matematiska operationer som addition, subtraktion, multiplikation, division etc.
Hur man använder Timedelta Objects
Med Python tidsdeltaobjekt kan du uppskatta tiden för både framtid och dåtid. Med andra ord, det är en tidsperiod att förutsäga någon speciell dag, datum eller tid.
Kom ihåg att denna funktion inte är till för att skriva ut tid eller datum, utan något att BERÄKNA om framtiden eller det förflutna. Låt oss se en Python timedelta exempel för att förstå det bättre.
Steg 1) För att köra Timedelta Objects måste du först deklarera importsatsen och sedan köra koden
- Skriv importsats för tidsdelta
- Skriv nu koden för att skriva ut objekt från tidsdelta som visas i skärmdumpen
- Kör koden. Tidsdeltan representerar ett intervall på 365 dagar, 8 timmar och 15 minuter och skriver ut samma
Förvirrande? Nästa steg kommer att hjälpa-
Steg 2) Låt oss få dagens datum och tid för att kontrollera om vårt importutlåtande fungerar bra. När koden exekveras skriver den ut dagens datum vilket betyder att vår importsats fungerar bra
Steg 3) Vi kommer att se hur vi kan hämta datum om ett år genom deltaobjekt. När vi kör koden ger den utdata som förväntat.
Steg 4) Ett annat exempel på hur tidsdelta kan användas för att beräkna framtida datum från aktuellt datum och tid
Steg 5) Låt oss titta på ett mer komplext exempel. Jag skulle vilja bestämma hur många dagar efter nyår. Så här går vi vidare
- Genom att använda today= date.today() får vi dagens datum
- Vi vet att det nya året alltid är den 1-jan, men året kan bli annorlunda. Med nyd= date(today.year,1,1) lagrar vi det nya året i variabeln nyd
- if nyd < idag: jämför om det aktuella datumet är större än det nya året. Om ja, går den in i while-slingan
- ((idag-nyd).days) ger skillnaden mellan ett aktuellt datum och nytt år i DAYS
Resultatet visar att "nyårsdagen gick redan för 11 dagar sedan."
Här är den fullständiga arbetskoden
# # 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 Exempel
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)
Sammanfattning
För att manipulera datum och tider på både enkla och komplexa sätt tillhandahåller datetime-modulen olika klasser eller kategorier som
- datum – Manipulera bara datum (månad, dag, år)
- tid – Tid oberoende av dagen (timme, minut, sekund, mikrosekund)
- datetime – Kombination av tid och datum (månad, dag, år, timme, sekund, mikrosekund)
- tidsdelta— En tidslängd som används för att manipulera datum
- tzinfo— En abstrakt klass för att hantera tidszoner
Använda datetime-objekt
- Det är obligatoriskt att importera datetime-objekt innan koden körs
- Använder date.today-funktionen för att skriva ut individuellt datum/månad/år samt indexering av dagen
- Använder date.time-objekt för att få tid i timmar, minuter, sekunder och millisekunder
Formatera Time-Out med "str f tidsfunktion"
- Använd "str f tidsfunktion" för att ändra årets format
- Skriv ut dag, datum, månad och år separat,
- Anropstid för alla format 12 timmar eller 24 timmar
Tidsdeltaobjekt
- Med tidsdeltaobjekt kan du uppskatta tiden för både framtiden och det förflutna
- Beräkna det totala antalet dagar kvar för den speciella dagen (födelsedagen) från den aktuella tiden
- Beräkna det totala antalet passerade dagar för speciell dag (födelsedag) från den aktuella tiden