Документация по Python. Теоретические материалы, и практические задачи

Python дата и время

Python дата и время. Работа с датой и временем в Python, как и практически в любом другом языке программирования, является одним из важнейших частей. В данной статье, мы постараемся разобрать несколько упражнений, которые помогут вам лучше понять, логику работы с датой и временем. В этой статье, мы с вами разберем 10 примеров/упражнений которые помогут вам отточить ваши навыки. Все приведенные примеры тестировались на Python 3.

Содержание:

  1. Упражнение 1: Печать текущей даты и времени в Python
  2. Упражнение 2: Преобразование строки в объект datetime
  3. Упражнение 3: Вычитание недели (7 дней) из заданной даты в Python
  4. Упражнение 4: Вывести дату в следующем формате
  5. Упражнение 5: Найти день недели для заданной даты
  6. Упражнение 6: Добавить неделю (7 дней) и 12 часов к заданной дате
  7. Упражнение 7: Вывести текущее время в миллисекундах
  8. Упражнение 8: Преобразовать следующее время даты в строку
  9. Упражнение 9: Вычислить дату через 4 месяца от текущей даты
  10. Упражнение 10: Вычислить количество дней между двумя заданными датами

Упражнение 1: Печать текущей даты и времени в Python

Решение

Используйте datetime модуль

                    
import datetime
# Print date and time
print(datetime.datetime.now())
 
# only time
print(datetime.datetime.now().time())

Решение 2 используйте time.strftime()

                    
from time import gmtime, strftime
 
print(strftime("%Y-%m-%d %H:%M:%S", gmtime()))

Упражнение 2: Преобразование строки в объект datetime

Например, Вы получили следующую дату в строковом формате. Пожалуйста, преобразуйте ее в объект Python DateTime.

Дано:

                    
date_string = "Feb 25 2020 4:20PM"

Ожидаемый результат:

Решение

                    
from datetime import datetime
 
date_string = "Feb 25 2020  4:20PM"
datetime_object = datetime.strptime(date_string, '%b %d %Y %I:%M%p')
print(datetime_object)

Упражнение 3: Вычитание недели (7 дней) из заданной даты в Python 

Дано:

                    
given_date = datetime(2020, 2, 25)

Ожидаемый результат:

Решение

                    
from datetime import datetime, timedelta

given_date = datetime(2020, 2, 25)

print("Given date")

print(given_date)

days_to_subtract = 7

res_date = given_date - timedelta(days=days_to_subtract)

print("New Date")

print(res_date)

Упражнение 4: Вывести дату в следующем формате

                    
Day_name  Day_number  Month_name  Year

Дано:

                    
given_date = datetime(2020, 2, 25)

Ожидаемый результат:

Обратитесь за помощью к кодам формата даты

Решение

                    
from datetime import datetime
given_date = datetime(2020, 2, 25)
print("Given date is")
print(given_date.strftime('%A %d %B %Y'))

Упражнение 5: Найти день недели для заданной даты

Дано:

                    
given_date = datetime(2020, 7, 26)

Ожидаемый результат:

Решение 1:

                    
from datetime import datetime

given_date = datetime(2020, 7, 26)

# получаем день недели как целое число

print(given_date.today().weekday())

# Получаем английское название дня недели

print(given_date.strftime('%A'))

Решение 2 использование модуля календаря

                    
import calendar

from datetime import datetime

given_date = datetime(2020, 7, 26)

weekday = calendar.day_name[given_date.weekday()]

print(weekday)

Упражнение 6: Добавить неделю (7 дней) и 12 часов к заданной дате 

Дано:

                    
# 2020-03-22 10:00:00
given_date = datetime(2020, 3, 22, 10, 0, 0)

Ожидаемый результат:

Решение

                    
from datetime import datetime, timedelta

given_date = datetime(2020, 3, 22, 10, 00, 00)

print("Given date")

print(given_date)

days_to_add = 7

res_date = given_date + timedelta(days=days_to_add, hours=12)

print("New Date")

print(res_date)

Упражнение 7: Вывести текущее время в миллисекундах

Решение

                    
import time

milliseconds = int(round(time.time() * 1000))

print(milliseconds)

Упражнение 8: Преобразовать следующее время даты в строку 

Дано:

                    
given_date = datetime(2020, 2, 25)

Ожидаемый результат:

Решение

                    
from datetime import datetime

given_date = datetime(2020, 2, 25)

string_date = given_date.strftime("%Y-%m-%d %H:%M:%S")

print(string_date)

Упражнение 9: Вычислить дату через 4 месяца от текущей даты

Дано:

                    
# 2020-02-25

given_date = datetime(2020, 2, 25).date()

Ожидаемый результат:

Решение:

  • Нам нужно использовать relativedelta модуля Python dateutil. Мы можем добавить 4 месяца к заданной дате с помощью relativedelta.
  • Relativedelta полезна, когда мы хотим работать с месяцами, в которых 29, 30, 31 день.
                    
from datetime import datetime

from dateutil.relativedelta import relativedelta

# 2020-02-25

given_date = datetime(2020, 2, 25).date()

months_to_add = 4

new_date = given_date + relativedelta(months=+ months_to_add)

print(new_date)

Упражнение 10: Вычислить количество дней между двумя заданными датами 

Дано:

                    
# 2020-02-25
date_1 = datetime(2020, 2, 25)

# 2020-09-17
date_2 = datetime(2020, 9, 17)

Ожидаемый результат:

Решение

                    
from datetime import datetime

# 2020-02-25

date_1 = datetime(2020, 2, 25).date()

# 2020-09-17

date_2 = datetime(2020, 9, 17).date()

delta = None

if date_1 > date_2:

    print("date_1 is greater")

    delta = date_1 - date_2

else:

    print("date_2 is greater")

    delta = date_2 - date_1

print("Difference is", delta.days, "days")

Если у вас возникают вопросы по описанным упражнениям, пишите в комментариях.