В этой статье вы научитесь управлять датой и временем в Python с помощью примеров.
В Python есть модуль datetime для работы с датой и временем. Прежде чем копать глубже, давайте создадим несколько простых программ, связанных с датой и временем.
Пример 1: получить текущую дату и время
import datetime datetime_object = datetime.datetime.now() print(datetime_object)
Когда вы запустите программу, результат будет примерно таким:
2018-12-19 09: 26: 03.478039
Здесь мы импортировали модуль datetime с помощью import datetime
оператора.
Один из классов, определенных в datetime
модуле, - это datetime
class. Затем мы использовали now()
метод для создания datetime
объекта, содержащего текущую местную дату и время.
Пример 2: Получить текущую дату
import datetime date_object = datetime.date.today() print(date_object)
Когда вы запустите программу, результат будет примерно таким:
2018-12-19
В этой программе мы использовали today()
метод, определенный в date
классе, чтобы получить date
объект, содержащий текущую локальную дату.
Что внутри datetime?
Мы можем использовать функцию dir (), чтобы получить список, содержащий все атрибуты модуля.
import datetime print(dir(datetime))
Когда вы запустите программу, вывод будет:
('MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'date', ' datetime ',' datetime_CAPI ',' time ',' timedelta ',' timezone ',' tzinfo ')
Обычно используемые классы в модуле datetime:
- Дата Класс
- класс времени
- datetime Класс
- Класс timedelta
datetime.date Класс
Вы можете создавать экземпляры date
объектов из date
класса. Объект даты представляет собой дату (год, месяц и день).
Пример 3: объект Date для представления даты
import datetime d = datetime.date(2019, 4, 13) print(d)
Когда вы запустите программу, вывод будет:
2019-04-13
Если вам интересно, date()
в приведенном выше примере это конструктор date
класса. Конструктор принимает три аргумента: год, месяц и день.
Переменная a - это date
объект.
Мы можем только импортировать date
класс из datetime
модуля. Вот как:
from datetime import date a = date(2019, 4, 13) print(a)
Пример 4: Получить текущую дату
Вы можете создать date
объект, содержащий текущую дату, используя метод класса с именем today()
. Вот как:
from datetime import date today = date.today() print("Current date =", today)
Пример 5: получить дату из отметки времени
Мы также можем создавать date
объекты по метке времени. Отметка времени Unix - это количество секунд между определенной датой и 1 января 1970 года по всемирному координированному времени. Вы можете преобразовать метку времени в дату с помощью fromtimestamp()
метода.
from datetime import date timestamp = date.fromtimestamp(1326244364) print("Date =", timestamp)
Когда вы запустите программу, вывод будет:
Дата = 11.01.2012
Пример 6. Распечатайте сегодняшний год, месяц и день.
Мы можем легко получить год, месяц, день, день недели и т. Д. Из объекта даты. Вот как:
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)
datetime.time
Объект времени, созданный из time
класса, представляет местное время.
Пример 7: объект времени для представления времени
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)
Когда вы запустите программу, вывод будет:
a = 00:00:00 b = 11:34:56 c = 11:34:56 d = 11: 34: 56.234566
Пример 8: Печать часа, минуты, секунды и микросекунды
Создав time
объект, вы можете легко распечатать его атрибуты, такие как час, минута и т. Д.
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)
Когда вы запустите пример, результат будет:
час = 11 минут = 34 секунды = 56 микросекунд = 0
Обратите внимание, что мы не передали аргумент микросекунды. Следовательно, 0
печатается его значение по умолчанию .
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:
- строка, представляющая дату и время
- код формата, эквивалентный первому аргументу
Кстати, %d
, %B
и %Y
коды формата используются для дня, месяца (полное наименование) и год соответственно.
Посетите Python strptime (), чтобы узнать больше.
Обработка часового пояса в Python
Предположим, вы работаете над проектом и вам нужно отображать дату и время в соответствии с их часовым поясом. Вместо того, чтобы пытаться самостоятельно обрабатывать часовой пояс, мы предлагаем вам использовать сторонний модуль pytZ.
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"))
Когда вы запустите программу, результат будет примерно таким:
Местное время: 2018-12-20 13: 10: 44.260462 Америка / Нью-Йорк время: 2018-12-20 13: 10: 44.260462 Европа / Лондонское время: 2018-12-20 13: 10: 44.260462
Здесь datetime_NY и datetime_London - это объекты datetime, содержащие текущую дату и время соответствующего часового пояса.