Tässä artikkelissa opit manipuloimaan päivämäärää ja kellonaikaa Pythonissa esimerkkien avulla.
Python on moduuli nimeltään Datetime työskennellä päivämääriä ja kellonaikoja. Luodaan muutama yksinkertainen päivämäärään ja aikaan liittyvä ohjelma, ennen kuin kaivamme syvemmälle.
Esimerkki 1: Hae nykyinen päivämäärä ja aika
import datetime datetime_object = datetime.datetime.now() print(datetime_object)
Kun suoritat ohjelmaa, tulos on jotain:
2018-12-19 09: 26: 03.478039
Tässä olemme tuoneet päivämäärä- moduulin käyttämällä import datetime
lausetta.
Yksi datetime
moduulissa määritetyistä luokista on datetime
luokka. Sitten käytimme now()
menetelmää datetime
objektin luomiseen, joka sisältää nykyisen paikallisen päivämäärän ja kellonajan.
Esimerkki 2: Hae nykyinen päivämäärä
import datetime date_object = datetime.date.today() print(date_object)
Kun suoritat ohjelmaa, tulos on jotain:
2018-12-19
Tässä ohjelmassa olemme käyttäneet luokassa today()
määriteltyä menetelmää date
saadaksesi date
objektin, joka sisältää nykyisen paikallisen päivämäärän.
Mitä päivämäärä sisältää?
Voimme käyttää funktiota dir () saadaksesi luettelon, joka sisältää kaikki moduulin attribuutit.
import datetime print(dir(datetime))
Kun suoritat ohjelmaa, tulos on:
('MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'päivämäärä', datetime ',' datetime_CAPI ',' time ',' timedelta ',' aikavyöhyke ',' tzinfo ')
Datetime-moduulin yleisesti käytetyt luokat ovat:
- päivämääräluokka
- aikaluokka
- päivämäärä-luokka
- timedelta-luokka
datetime.date-luokka
Voit instantisoida luokan date
objektit date
. Päiväobjekti edustaa päivämäärää (vuosi, kuukausi ja päivä).
Esimerkki 3: Päivämäärää edustava päivämääräobjekti
import datetime d = datetime.date(2019, 4, 13) print(d)
Kun suoritat ohjelmaa, tulos on:
2019-04-13
Jos mietit, date()
yllä olevassa esimerkissä on date
luokan rakentaja . Rakentajalla on kolme argumenttia: vuosi, kuukausi ja päivä.
Muuttuja a on date
esine.
Voimme tuoda date
luokkaa vain datetime
moduulista. Näin:
from datetime import date a = date(2019, 4, 13) print(a)
Esimerkki 4: Hae nykyinen päivämäärä
Voit luoda date
objektin, joka sisältää nykyisen päivämäärän, käyttämällä nimettyä luokkatapaa today()
. Näin:
from datetime import date today = date.today() print("Current date =", today)
Esimerkki 5: Hae päivämäärä aikaleimasta
Voimme myös luoda date
esineitä aikaleimasta. Unix-aikaleima on sekuntien määrä tietyn päivämäärän ja 1. tammikuuta 1970 välillä UTC: ssä. Voit muuntaa aikaleiman päivämääräksi fromtimestamp()
menetelmällä.
from datetime import date timestamp = date.fromtimestamp(1326244364) print("Date =", timestamp)
Kun suoritat ohjelmaa, tulos on:
Päivämäärä = 2012-01-11
Esimerkki 6: Tulosta tämän vuoden vuosi, kuukausi ja päivä
Voimme helposti saada päivämääräkohteesta vuoden, kuukauden, päivän, viikonpäivän jne. Näin:
from datetime import date # date object of today's date today = date.today() print("Current year:", today.year) print("Current month:", today.month) print("Current day:", today.day)
päivämäärä.aika
Luokalta instantoitu aikaobjekti time
edustaa paikallista aikaa.
Esimerkki 7: Aika edustava aikaobjekti
from datetime import time # time(hour = 0, minute = 0, second = 0) a = time() print("a =", a) # time(hour, minute and second) b = time(11, 34, 56) print("b =", b) # time(hour, minute and second) c = time(hour = 11, minute = 34, second = 56) print("c =", c) # time(hour, minute, second, microsecond) d = time(11, 34, 56, 234566) print("d =", d)
Kun suoritat ohjelmaa, tulos on:
a = 00:00:00 b = 11:34:56 c = 11:34:56 d = 11: 34: 56.234566
Esimerkki 8: Tulosta tunti, minuutti, sekunti ja mikrosekunti
Kun olet luonut time
objektin, voit tulostaa helposti sen määritteet, kuten tunnin, minuutin jne.
from datetime import time a = time(11, 34, 56) print("hour =", a.hour) print("minute =", a.minute) print("second =", a.second) print("microsecond =", a.microsecond)
Kun suoritat esimerkin, tulos on:
tunti = 11 minuutti = 34 sekunti = 56 mikrosekuntia = 0
Huomaa, että emme ole läpäisseet mikrosekunnin argumenttia. Siksi sen oletusarvo 0
tulostetaan.
datetime.datetime
The datetime
module has a class named dateclass
that can contain information from both date and time objects.
Example 9: Python datetime object
from datetime import datetime #datetime(year, month, day) a = datetime(2018, 11, 28) print(a) # datetime(year, month, day, hour, minute, second, microsecond) b = datetime(2017, 11, 28, 23, 55, 59, 342380) print(b)
When you run the program, the output will be:
2018-11-28 00:00:00 2017-11-28 23:55:59.342380
The first three arguments year, month and day in the datetime()
constructor are mandatory.
Example 10: Print year, month, hour, minute and timestamp
from datetime import datetime a = datetime(2017, 11, 28, 23, 55, 59, 342380) print("year =", a.year) print("month =", a.month) print("hour =", a.hour) print("minute =", a.minute) print("timestamp =", a.timestamp())
When you run the program, the output will be:
year = 2017 month = 11 day = 28 hour = 23 minute = 55 timestamp = 1511913359.34238
datetime.timedelta
A timedelta
object represents the difference between two dates or times.
Example 11: Difference between two dates and times
from datetime import datetime, date t1 = date(year = 2018, month = 7, day = 12) t2 = date(year = 2017, month = 12, day = 23) t3 = t1 - t2 print("t3 =", t3) t4 = datetime(year = 2018, month = 7, day = 12, hour = 7, minute = 9, second = 33) t5 = datetime(year = 2019, month = 6, day = 10, hour = 5, minute = 55, second = 13) t6 = t4 - t5 print("t6 =", t6) print("type of t3 =", type(t3)) print("type of t6 =", type(t6))
When you run the program, the output will be:
t3 = 201 days, 0:00:00 t6 = -333 days, 1:14:20 type of t3 = type of t6 =
Notice, both t3 and t6 are of type.
Example 12: Difference between two timedelta objects
from datetime import timedelta t1 = timedelta(weeks = 2, days = 5, hours = 1, seconds = 33) t2 = timedelta(days = 4, hours = 11, minutes = 4, seconds = 54) t3 = t1 - t2 print("t3 =", t3)
When you run the program, the output will be:
t3 = 14 days, 13:55:39
Here, we have created two timedelta
objects t1 and t2, and their difference is printed on the screen.
Example 13: Printing negative timedelta object
from datetime import timedelta t1 = timedelta(seconds = 33) t2 = timedelta(seconds = 54) t3 = t1 - t2 print("t3 =", t3) print("t3 =", abs(t3))
When you run the program, the output will be:
t3 = -1 day, 23:59:39 t3 = 0:00:21
Example 14: Time duration in seconds
You can get the total number of seconds in a timedelta object using total_seconds()
method.
from datetime import timedelta t = timedelta(days = 5, hours = 1, seconds = 33, microseconds = 233423) print("total seconds =", t.total_seconds())
When you run the program, the output will be:
total seconds = 435633.233423
You can also find sum of two dates and times using +
operator. Also, you can multiply and divide a timedelta
object by integers and floats.
Python format datetime
The way date and time is represented may be different in different places, organizations etc. It's more common to use mm/dd/yyyy
in the US, whereas dd/mm/yyyy
is more common in the UK.
Python has strftime()
and strptime()
methods to handle this.
Python strftime() - datetime object to string
The strftime()
method is defined under classes date
, datetime
and time
. The method creates a formatted string from a given date
, datetime
or time
object.
Example 15: Format date using strftime()
from datetime import datetime # current date and time now = datetime.now() t = now.strftime("%H:%M:%S") print("time:", t) s1 = now.strftime("%m/%d/%Y, %H:%M:%S") # mm/dd/YY H:M:S format print("s1:", s1) s2 = now.strftime("%d/%m/%Y, %H:%M:%S") # dd/mm/YY H:M:S format print("s2:", s2)
When you run the program, the output will be something like:
time: 04:34:52 s1: 12/26/2018, 04:34:52 s2: 26/12/2018, 04:34:52
Here, %Y
, %m
, %d
, %H
etc. are format codes. The strftime()
method takes one or more format codes and returns a formatted string based on it.
In the above program, t, s1 and s2 are strings.
%Y
- year (0001,… , 2018, 2019,… , 9999)%m
- month (01, 02,… , 11, 12)%d
- day (01, 02,… , 30, 31)%H
- hour (00, 01,… , 22, 23%M
- minute (00, 01,… , 58, 59)%S
- second (00, 01,… , 58, 59)
To learn more about strftime()
and format codes, visit: Python strftime().
Python strptime() - string to datetime
The strptime()
method creates a datetime
object from a given string (representing date and time).
Example 16: strptime()
from datetime import datetime date_string = "21 June, 2018" print("date_string =", date_string) date_object = datetime.strptime(date_string, "%d %B, %Y") print("date_object =", date_object)
When you run the program, the output will be:
date_string = 21 June, 2018 date_object = 2018-06-21 00:00:00
The strptime()
method takes two arguments:
- merkkijono, joka edustaa päivämäärää ja aikaa
- muotoilukoodi, joka vastaa ensimmäistä argumenttia
Muuten %d
, %B
ja %Y
muoto koodeja käytetään päivä, kuukausi (koko nimi) ja vuosi vastaavasti.
Lisätietoja on osoitteessa Python strptime ().
Aikavyöhykkeen käsittely Pythonissa
Oletetaan, että työskentelet projektissa ja sinun on näytettävä päivämäärä ja aika heidän aikavyöhykkeensä perusteella. Sen sijaan, että yrität käsitellä aikavyöhykettä itse, suosittelemme käyttämään kolmannen osapuolen pytZ-moduulia.
from datetime import datetime import pytz local = datetime.now() print("Local:", local.strftime("%m/%d/%Y, %H:%M:%S")) tz_NY = pytz.timezone('America/New_York') datetime_NY = datetime.now(tz_NY) print("NY:", datetime_NY.strftime("%m/%d/%Y, %H:%M:%S")) tz_London = pytz.timezone('Europe/London') datetime_London = datetime.now(tz_London) print("London:", datetime_London.strftime("%m/%d/%Y, %H:%M:%S"))
Kun suoritat ohjelmaa, tulos on jotain:
Paikallinen aika: 2018-12-20 13: 10: 44,260462 Amerikka / New_York aika: 2018-12-20 13: 10: 44.260462 Eurooppa / Lontoon aika: 2018-12-20 13: 10: 44.260462
Tässä datetime_NY ja datetime_London ovat päivämääräobjekteja, jotka sisältävät kulloisenkin päivämäärän ja kellonajan.