Python Дата и час, часDelta, Strftime(Формат) с примери
⚡ Умно обобщение
Python datetime, заедно с класовете date, time и timedelta, обработва дати, часове и интервали като обекти. Модулът datetime форматира изхода с strftime(), анализира низове и изчислява бъдещи или минали моменти, използвайки timedelta аритметика.

In Python, дата, час и дата и час Класовете предоставят редица функции за работа с дати, часове и времеви интервали. Дата и дата и час в Python са обекти, така че когато ги манипулирате, всъщност манипулирате обекти, а не низове или времеви отметки. Винаги, когато манипулирате дати или час, трябва да импортирате модула datetime.
Класовете за дата и час влизат Python са категоризирани в 5 основни класа.
- дата – манипулиране само на дата (месец, ден, година)
- време – Време, независимо от деня (час, минута, секунда, микросекунда)
- datetime – Комбинация от час и дата (месец, ден, година, час, секунда, микросекунда)
- timedelta— Продължителност от време, използвана за манипулиране на дати
- tzinfo — Абсолютен мускулtract клас за работа с часови зони
Как да използвате клас Date & DateTime
Стъпка ) Преди да стартирате кода за формат на дата и час в Python, важно е да импортирате Python модули за дата и час, както е показано на екранната снимка по-долу.
Тези инструкции за импортиране са предварително дефинирани части от функционалност в Python библиотека, която ви позволява да манипулирате дати и часове, без да пишете никакъв код.
Помислете за следните точки, преди да изпълните Python код на формата за дата и час
from datetime import date
Този ред казва на Python интерпретатор за импортиране на класа дата от модула datetime в PythonНие не пишем кода за тази функционалност за дата, а просто го импортираме за наша употреба.
Отпечатайте дата с помощта на date.today()
Функцията date.today() има няколко свойства, свързани с нея. Можем да отпечатаме отделния ден/месец/година и много други неща.
Да видим пример
Днешният делничен номер
Функцията date.today() ви дава и номера на деня от седмицата. Ето таблицата с дни от седмицата, която започва с Monday като 0 и неделя като 6.
| ден | Номер на деня от седмицата |
|---|---|
| Monday | 0 |
| Вторник | 1 |
| Сряда | 2 |
| Четвъртък | 3 |
| Петък | 4 |
| Събота | 5 |
| Неделя | 6 |
Weekday Number е полезно за масиви, чийто индекс зависи от деня от седмицата.
Стъпка ) След това създаваме екземпляр на обекта за дата.
Стъпка ) След това отпечатваме датата и изпълняваме кода.
Резултатът е както се очаква.
Python Текуща дата и час: сега() днес()
Стъпка 1) Подобно на Date Objects, можем също да използваме „ДАТА ЧАС ОБЕКТИ“ in Python. Python обектите за дата и час дават дата заедно с часа часове, минути, секунди и милисекунди.
Когато изпълним кода за datetime, той дава изхода с текущата дата и час.
Стъпка 2) С „DATETIME OBJECT“ можете също да извикате класа time. Да предположим, че искаме да отпечатаме само текущото време без датата.
t = datetime.time(datetime.now())
- Бяхме импортирали времевия клас. Ще му присвоим текущата стойност на времето с помощта на datetime.now()
- Присвояваме стойността на текущото време на променливата t.
И това ще ми даде точно време. Така че нека стартираме тази програма.
Добре, виждате, че тук имам датата и часа. А на следващия ред имам само часа.
Стъпка 3) Ще приложим нашия индексатор за дни от седмицата към списъка с масиви за дни от седмицата, за да разберем кой ден е днес.
- Операторът за дни от седмицата (wd) получава числото от (0-6) в зависимост от това кой е текущият ден от седмицата. Тук декларирахме масива от списъка за дни (пон, вт, ср...нед).
- Използвайте тази стойност на индекса, за да разберете кой ден е днес. В нашия случай това е #2 и представлява сряда, така че в изхода ще се отпечата „Което е сряда“.
Ето пълния код за получаване на текущата дата и час с помощта на 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()
Досега научихме как да използваме дата и час обект в Python. Ще напреднем още една стъпка и ще научим как да използваме функция за форматиране, за да форматираме часа и датата.
Стъпка 1) Първо ще видим проста стъпка как да форматирате годината. По-добре е да разберете с пример.
- Използвахме „Функция strftime“ за форматиране.
- Тази функция използва различни контролен код да даде изход.
- Всеки контролен код наподобява различни параметри като година, месец, ден от седмицата и дата [(%y/%Y – година), (%a/%A- ден от седмицата), (%b/%B- месец), (%d – ден от месеца)] .
- В нашия случай е така („%Y“) който прилича на година, той отпечатва пълната година с века (напр. 2018).
Стъпка 2) Сега, ако замените („%Y“) с малки букви, т.е. ( „%y) и изпълните кода, изходът ще покаже само (18), а не (2018). Столетието на годината няма да се показва, както е показано на екранната снимка по-долу
Стъпка 3) Функцията Strf може да декларира датата, деня, месеца и годината поотделно. Също така, с малки промени в контролния код във функцията strftime, можете да форматирате стила на текста.
Във функцията strftime, ако замените (%a) с главна буква А, т.е. (%A), изходът ще се отпечата като „Петък“, вместо просто съкращение „Петък“.
Стъпка 4) С помощта на функцията “Strftime” можем също да извлечем локално системно време, дата или и двете.
- %C- показва местната дата и час
- %x- показва местната дата
- %X- показва местното време
В изхода можете да видите резултата според очакванията
Стъпка 5) Функцията „strftime“ ви позволява да извикате времето във всякакъв формат 24 часа или 12 часа.
Само чрез дефиниране на контролен код като %I/H за час, %M за минута, %S за секунда, човек може да извика време за различни формати
12 часа времето е декларирано [print now.strftime(“%I:%M:%S %p) ]
24 часа времето е декларирано [print now.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?
Timedelta в Python е обект, който представлява продължителността. Използва се главно за изчисляване на продължителността между две дати и часове. Използва се също за извличане на обект с някаква разлика в датата и часа. Обектът timedelta поддържа математически операции като събиране, извличане и събиране.tracции, умножение, деление и др.
Как да използвате Timedelta обекти
с Python timedelta обекти, можете да оцените времето както за бъдещето, така и за миналото. С други думи, това е период от време за прогнозиране на всеки специален ден, дата или час.
Запомнете, че тази функция не е за отпечатване на часа или датата, а за нещо за ИЗЧИСЛЕНИЕ относно бъдещето или миналотоДа видим Python timedelta пример, за да го разберете по-добре.
Стъпка 1) За да стартирате Timedelta Objects, първо трябва да декларирате оператора за импортиране и след това да изпълните кода
- Напишете инструкция за импортиране за timedelta
- Сега напишете кода за отпечатване на обект от делтата на времето, както е показано на екранната снимка
- Стартирайте кода. Timedelta представлява период от 365 дни, 8 часа и 15 минути и отпечатва същото
объркващо? Следващата стъпка ще помогне-
Стъпка 2) Нека вземем днешната дата и час, за да проверим дали нашето изявление за импортиране работи добре. Когато кодът се изпълни, той отпечатва днешната дата, което означава, че нашето изявление за импортиране работи добре
Стъпка 3) Ще видим как можем да извлечем дата след една година чрез делта обекти. Когато стартираме кода, той дава изхода, както се очаква.
Стъпка 4) Друг пример за това как делтата на времето може да се използва за изчисляване на бъдеща дата от текущата дата и час
Стъпка 5) Нека разгледаме по-сложен пример. Бих искал да определя колко дни след Нова година. Ето как ще продължим
- Използвайки today= date.today() ще получим днешната дата
- Знаем, че новата година винаги е на 1 януари, но годината може да е различна. Използвайки nyd= date(today.year,1,1) съхраняваме новата година в променлива nyd
- ако nyd < today: сравнява дали текущата дата е по-голяма от новата година. Ако е така, влиза в цикъла while
- ((today-nyd).days) дава разликата между текуща дата и нова година в ДНИ
Резултатът показва, че „Новата година вече е минала преди 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 е оператор, а не функция. Използвайте тези версии само когато поддържате legacy 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)



















