Python ДатаЧас, ЧасDelta, Strftime(Format) із прикладами

⚡ Розумний підсумок

Python datetime, разом із класами date, time та timedelta, обробляє дати, час та інтервали як об'єкти. Модуль datetime форматує вивід за допомогою strftime(), аналізує рядки та обчислює майбутні або минулі моменти за допомогою арифметики timedelta.

  • 🔘 П'ять класів: Модуль datetime групує класи date, time, datetime, timedelta та tzinfo для роботи з датою та часом.
  • ☑️ Поточні значення: datetime.now() та date.today() повертають поточну дату та час, включаючи номер дня тижня.
  • Форматування: Функція strftime() перетворює дату та час на читабельний текст за допомогою керуючих кодів, таких як %Y, %A та %H.
  • 🧪 Дельта часу: Об'єкт timedelta вимірює тривалість та передбачає майбутні або минулі дати за допомогою додавання та віднімання.trac.
  • 🛠️ Директиви: Ті самі керуючі коди керують strftime() для виводу та strptime() для зчитування рядка назад у тип дати та часу.
  • 🤖 Робочі процеси зі штучним інтелектом: Конвеєри машинного навчання виводять такі функції дати та часу, як день тижня та година, для моделей часових рядів.

Python DateTime

In Python, дата, час і датачас Класи надають низку функцій для роботи з датами, часом та часовими інтервалами. Дата та дата й час у Python є об'єктами, тому, коли ви маніпулюєте ними, ви насправді маніпулюєте об'єктами, а не рядками чи позначками часу. Щоразу, коли ви маніпулюєте датами або часом, вам потрібно імпортувати модуль datetime.

Класи datetime Python поділяються на 5 основних класів.

  • дата – маніпулювати лише датою (місяць, день, рік)
  • час – час, не залежний від дня (година, хвилина, секунда, мікросекунда)
  • datetime – поєднання часу та дати (місяць, день, рік, година, секунда, мікросекунда)
  • timedelta — тривалість часу, який використовується для обробки дат
  • tzinfo — пресtract-клас для роботи з часовими поясами

Як використовувати клас Date & DateTime

крок 1) Перш ніж запускати код для формату дати й часу в Python, важливо, щоб ви імпортували Python модулі дати і часу, як показано на знімку екрана нижче.

Використовуйте клас Date & DateTime

Ці оператори імпорту є попередньо визначеними функціями в Python бібліотека, яка дозволяє маніпулювати датами та часом без написання будь-якого коду.

Перед виконанням врахуйте наступні моменти Python код формату дати й часу

from datetime import date

Цей рядок розповідає про Python інтерпретатор для імпорту класу дати з модуля datetime PythonМи не пишемо код для цієї функції дати, а просто імпортуємо його для нашого використання.

Роздрукувати дату за допомогою date.today()

Функція date.today() має кілька властивостей, пов'язаних з нею. Ми можемо вивести окремий день/місяць/рік та багато іншого.

Подивимось приклад

Роздрукувати дату за допомогою date.today()

Число сьогоднішнього тижня

Функція date.today() також повертає номер дня тижня. Ось таблиця днів тижня, яка починається з Monday як 0, а в неділю — як 6.

день Номер тижня
Monday 0
Вівторок 1
середа 2
четвер 3
п'ятниця 4
Суботня 5
неділя 6

Номер дня тижня корисний для масивів, індекс яких залежить від дня тижня.

Роздрукувати дату за допомогою date.today()

крок 2) Далі ми створюємо екземпляр об’єкта дати.

Використовуйте клас Date & DateTime

крок 3) Далі друкуємо дату і запускаємо код.

Використовуйте клас Date & DateTime

Вихідний результат такий, як очікувалося.

Python Поточна дата й час: зараз() сьогодні()

Крок 1) Подібно до об’єктів дати, ми також можемо використовувати «ДАТА-ЧАС ОБ’ЄКТИ» in Python. Python об'єкти дати та часу дають дату разом із часом години, хвилини, секунди та мілісекунди.

Python Поточна дата та час

Коли ми виконуємо код для datetime, він дає вихід із поточною датою та часом.

Крок 2) За допомогою «DATETIME OBJECT» також можна викликати клас часу. Припустимо, що ми хочемо вивести лише поточний час без дати.

t = datetime.time(datetime.now())
  • Ми імпортували клас часу. Ми будемо призначати йому поточне значення часу за допомогою datetime.now()
  • Ми присвоюємо значення поточного часу змінній t.

І це дасть мені час. Отже, давайте запустимо цю програму.

Python Поточна дата та час

Добре, отже, ви можете бачити, що тут у мене є дата і час. А в наступному рядку у мене є лише час.

Крок 3) Ми застосуємо наш індексатор днів тижня до списку масивів днів тижня, щоб дізнатися, який сьогодні день.

  • Оператору днів тижня (wd) присвоюється число від (0-6) залежно від того, який поточний день тижня. Тут ми оголосили масив списку для днів (пн, вт, ср…нд).
  • Використовуйте це значення індексу, щоб дізнатися, який сьогодні день. У нашому випадку це №2, і він представляє середу, тому у вихідних даних буде надруковано «Що є середою».

Python Поточна дата та час

Ось повний код для отримання поточної дати та часу за допомогою datetime зараз

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()

Як відформатувати вихідні дати та час за допомогою Strftime()

Досі ми навчилися використовувати datetime та date об'єкт в Python. Ми підемо далі й дізнаємося, як використовувати функцію форматування для форматування часу та дати.

Крок 1) Спочатку ми побачимо простий крок, як відформатувати рік. Краще розібратися на прикладі.

Форматування дати та часу виведення за допомогою Strftime()

  • Ми використовували «Функція strftime» для форматування.
  • Ця функція використовує різні контрольний код давати вихід.
  • Кожен код керування відповідає різним параметрам, таким як рік, місяць, день тижня та дата. [(%y/%Y – рік), (%a/%A- день тижня), (%b/%B- місяць), (%d – день місяця)] .
  • У нашому випадку так і є («%Y») який нагадує рік, він друкує повний рік із століттям (наприклад, 2018).

Крок 2) Тепер, якщо ви заміните (“%Y”) на нижній регістр, тобто ( “%y) і виконайте код, результат відображатиме лише (18), а не (2018). Століття року не відображатиметься, як показано на знімку екрана нижче

Форматування дати та часу виведення за допомогою Strftime()

Крок 3) Функція Strf може окремо оголошувати дату, день, місяць та рік. Також за допомогою невеликих змін у керуючому коді функції strftime можна форматувати стиль тексту.

Форматування дати та часу виведення за допомогою Strftime()

Усередині функції strftime, якщо замінити (%a) на велику літеру A, тобто (%A), результат буде виведено як «П'ятниця», а не просто скорочення «П'ятниця».

Форматування дати та часу виведення за допомогою Strftime()

Крок 4) За допомогою функції «Strftime» ми також можемо отримати локальний системний час, дату або обидва.

  1. %C- вказує місцеву дату та час
  2. %x- вказує місцеву дату
  3. %X- вказує на місцевий час

Форматування дати та часу виведення за допомогою Strftime()

У вихідних даних ви можете побачити очікуваний результат

Крок 5) «Функція strftime» дозволяє викликати час у будь-якому форматі 24 години або 12 годин.

Форматування дати та часу виведення за допомогою Strftime()

Просто визначивши код керування, наприклад %I/H для години, % M для хвилини, %S для секунди, можна викликати час для різних форматів

12 годин час оголошено [print now.strftime(“%I:%M:%S %p) ]

24 годин час оголошено [друк зараз.strftime(“%H:%M”)]

Ось повний код для перетворення datetime в об’єкт 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()

Що таке Timedelta Python?

Дельта часу в Python – це об’єкт, що представляє тривалість. Він в основному використовується для обчислення тривалості між двома датами та часом. Він також використовується для отримання об’єкта з певною дельтою дати та часу. Об’єкт timedelta підтримує математичні операції, такі як додавання, підрахункиtracції, множення, ділення тощо.

Як використовувати об’єкти Timedelta

З Python timedelta об’єктів, ви можете оцінити час як для майбутнього, так і для минулого. Іншими словами, це проміжок часу для передбачення будь-якого особливого дня, дати чи часу.

Пам’ятайте, що ця функція призначена не для друку часу чи дати, а для ОБЧИСЛЕННЯ майбутнього чи минулогоДавайте подивимося Python приклад timedelta, щоб краще зрозуміти.

Крок 1) Щоб запустити об’єкти Timedelta, вам потрібно спочатку оголосити інструкцію імпорту, а потім виконати код

  1. Напишіть оператор імпорту для timedelta
  2. Тепер напишіть код для друку об’єкта з дельти часу, як показано на знімку екрана
  3. Запустіть код. Дельта часу представляє проміжок у 365 днів, 8 годин і 15 хвилин і друкує те саме

Об'єкти Timedelta

Збиває з пантелику? Наступний крок допоможе -

Крок 2) Отримаймо сьогоднішню дату й час, щоб перевірити, чи добре працює наш звіт про імпорт. Коли код виконується, він друкує сьогоднішню дату, що означає, що наш оператор імпорту працює добре

Об'єкти Timedelta

Крок 3) Ми побачимо, як ми можемо отримати дату через рік через дельта-об’єкти. Коли ми запускаємо код, він дає очікуваний результат.

Об'єкти Timedelta

Крок 4) Інший приклад того, як дельту часу можна використовувати для обчислення майбутньої дати з поточної дати та часу

Об'єкти Timedelta

Крок 5) Розглянемо більш складний приклад. Я хотів би визначити, скільки днів минуло Новий рік. Ось як ми будемо далі

  • Використовуючи today= date.today() ми отримаємо сьогоднішню дату
  • Ми знаємо, що Новий рік завжди настає 1 січня, але рік може бути іншим. Використовуючи nyd= date(today.year,1,1), ми зберігаємо новий рік у змінній nyd
  • якщо nyd < сьогодні: порівнює, чи поточна дата більша за новий рік. Якщо так, то виконується перехід до циклу while
  • ((сьогодні-нід).днів) дає різницю між поточною датою та новим роком у ДНЯХ

Об'єкти Timedelta

Результат показує, що «Новорічний день уже минув 11 днів тому».

Ось повний робочий код

#
# 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 Приклад

Наведені нижче приклади показують ті самі операції з датою та часом, написані для Python 2, де print — це оператор, а не функція. Використовуйте ці версії лише під час підтримки застарілої версії Python 2 код.

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)

Поширені запитання

Використовуйте datetime.strptime(text, format) для розбору рядка в об'єкт datetime. Передайте ті ж директиви, що й strftime(), тому "2018-06-29" читається як "%Y-%m-%d". Як протилежність strftime(), strptime() перетворює текст, зрозумілий людині, назад на об'єкт datetime, з яким можна обчислювати.

Дата та час без tzinfo є наївним; додавання часового поясу робить його відомим. Використовуйте вбудований модуль zoneinfo (Python 3.9+) або пакет pytz для локалізації дати та часу, а потім конвертації між зонами, щоб обчислення залишалися правильними в різних регіонах.

Викличте метод timestamp() для типу datetime, щоб отримати секунди з епохи Unix у вигляді числа з плаваючою комою, наприклад, datetime.now().timestamp(). Щоб піти іншим шляхом, datetime.fromtimestamp(value) перебудовує тип datetime з позначення часу Unix.

Обидва повертають поточну локальну дату та час, але datetime.now() приймає необов'язковий аргумент часового поясу, тоді як datetime.today() - ні. Для коду, що враховує часові пояси, надайте перевагу datetime.now(tz), щоб результат мав правильне зміщення, а не залишався наївним.

Так. Модуль datetime постачається з Python, тому встановлення pip не потрібне. Імпортуйте його за допомогою «from datetime import datetime, date, time, timedelta», і класи date, time, datetime, timedelta та tzinfo стануть доступними одразу.

Викличте метод isoformat(), щоб отримати стандартний рядок ISO 8601, такий як «2018-06-29T08:15:27». Для об'єкта дати він повертає «РРРР-ММ-ДД». isoformat() не потребує керуючих кодів, на відміну від strftime(), який створює власні макети з директив.

Конвеєри машинного навчання перетворюють необроблені позначки часу на такі характеристики, як день тижня, година, місяць та минулий час, використовуючи дату та дельту часу. Ці спроектовані характеристики дати допомагають моделям часових рядів та системам прогнозування на основі штучного інтелекту виявляти сезонні та циклічні закономірності.

Так. GitHub Copilot та агентні помічники зі штучним інтелектом генерують рядки формату strftime(), арифметичні обчислення timedelta та перетворення часових поясів з короткого коментаря, а також можуть пояснювати загадкові директиви. Завжди запускайте запропонований код, оскільки обробку дати та зміщення легко помилитися.

Підсумуйте цей пост за допомогою: