Python Дата и час, часDelta, Strftime(Формат) с примери

In Python, дата, час и дата и час classes предоставя редица функции за работа с дати, часове и времеви интервали. Дата и дата и час в Python са обектите, така че когато ги манипулирате, вие всъщност манипулирате обекти, а не низове или времеви отпечатъци. Всеки път, когато манипулирате дати или час, трябва да импортирате функцията за дата и час.

Класовете за дата и час влизат Python са категоризирани в 5 основни класа.

  • дата – манипулиране само на дата (месец, ден, година)
  • време – Време, независимо от деня (час, минута, секунда, микросекунда)
  • datetime – Комбинация от час и дата (месец, ден, година, час, секунда, микросекунда)
  • timedelta— Продължителност от време, използвана за манипулиране на дати
  • tzinfo— Абстрактен клас за работа с часови зони

Как да използвате клас Date & DateTime

Стъпка ) Преди да стартирате кода за формат на дата и час в Python, важно е да импортирате Python модули за дата и час, както е показано на екранната снимка по-долу.

Използвайте клас Date & DateTime

Тези инструкции за импортиране са предварително дефинирани части от функционалност в Python библиотека, която ви позволява да манипулирате дати и часове, без да пишете никакъв код.

Помислете за следните точки, преди да изпълните Python код на формата за дата и час

from datetime import date

Този ред казва на Python интерпретатор за импортиране на класа дата от модула datetime в Python. Ние не пишем кода за тази функционалност за дата, уви, просто го импортираме за наша употреба

Стъпка ) След това създаваме екземпляр на обекта за дата.

Използвайте клас Date & DateTime

Стъпка ) След това отпечатваме датата и изпълняваме кода.

Използвайте клас Date & DateTime

Резултатът е според очакванията.

Отпечатайте дата с помощта на date.today()

date.today функцията има няколко свойства, свързани с нея. Можем да отпечатаме индивидуален ден/месец/година и много други неща

Да видим пример

Отпечатайте дата с помощта на date.today()

Днешният делничен номер

Функцията date.today() също ви дава номера на деня от седмицата. Ето таблицата за делничните дни, която започва с Monday като 0 и неделя като 6

ден Номер на деня от седмицата
Monday 0
Вторник 1
Сряда 2
Четвъртък 3
Петък 4
Събота 5
Неделя 6

Weekday Number е полезно за масиви, чийто индекс зависи от деня от седмицата.

Отпечатайте дата с помощта на date.today()

Python Текуща дата и час: сега() днес()

Стъпка 1) Подобно на Date Objects, можем също да използваме „ДАТА ЧАС ОБЕКТИ“ in Python. Python обектите за дата и час дават дата заедно с часа часове, минути, секунди и милисекунди.

Python Текуща дата и час

Когато изпълним кода за datetime, той дава изхода с текущата дата и час.

Стъпка 2) С “DATETIME OBJECT” можете също да извикате времеви клас.

Да предположим, че искаме да отпечатаме само текущия час без датата.

t = datetime.time(datetime.now())
  • Бяхме импортирали времевия клас. Ще му присвоим текущата стойност на времето с помощта на datetime.now()
  • Присвояваме стойността на текущото време на променливата t.

И това ще ми даде точно време. Така че нека стартираме тази програма.

Python Текуща дата и час

Добре, така че можете да видите, че тук имам датата и часа. И след това на следващия ред, имам само времето

Стъпка 3) Ще приложим нашия индексатор на делничните дни към нашия arrayList на делничните дни, за да знаем кой ден е днес

  • Операторът за делнични дни (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), изходът ще се отпечата като „Firday“ вместо просто съкращение „Fri“.

Форматирайте изхода за дата и час със 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 часа времето е декларирано [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 поддържа математически операции като събиране, изваждане, умножение, деление и т.н.

Как да използвате Timedelta обекти

с Python timedelta обекти, можете да оцените времето както за бъдещето, така и за миналото. С други думи, това е период от време за прогнозиране на всеки специален ден, дата или час.

Запомнете, че тази функция не е за отпечатване на часа или датата, а за нещо за ИЗЧИСЛЕНИЕ относно бъдещето или миналото. Да видим един Python timedelta пример, за да го разберете по-добре.

Стъпка 1) За да стартирате Timedelta Objects, първо трябва да декларирате оператора за импортиране и след това да изпълните кода

Timedelta обекти

  1. Напишете инструкция за импортиране за timedelta
  2. Сега напишете кода за отпечатване на обект от делтата на времето, както е показано на екранната снимка
  3. Стартирайте кода. Timedelta представлява период от 365 дни, 8 часа и 15 минути и отпечатва същото

объркващо? Следващата стъпка ще помогне-

Стъпка 2) Нека вземем днешната дата и час, за да проверим дали нашето изявление за импортиране работи добре. Когато кодът се изпълни, той отпечатва днешната дата, което означава, че нашето изявление за импортиране работи добре

Timedelta обекти

Стъпка 3) Ще видим как можем да извлечем дата след една година чрез делта обекти. Когато стартираме кода, той дава изхода, както се очаква.

Timedelta обекти

Стъпка 4) Друг пример за това как делтата на времето може да се използва за изчисляване на бъдеща дата от текущата дата и час

Timedelta обекти

Стъпка 5) Нека разгледаме по-сложен пример. Бих искал да определя колко дни след Нова година. Ето как ще продължим

  • Използвайки today= date.today() ще получим днешната дата
  • Знаем, че новата година винаги е на 1 януари, но годината може да е различна. Използвайки nyd= date(today.year,1,1) съхраняваме новата година в променлива nyd
  • ако nyd < днес: сравнява дали текущата дата е по-голяма от новата година. Ако да, той влиза в цикъла while
  • ((today-nyd).days) дава разликата между текуща дата и нова година в ДНИ

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 Пример

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)

Oбобщение

За манипулиране на дати и часове както по прости, така и по сложни начини модулът за дата и час предоставя различни класове или категории като

  • дата – манипулиране само на дата (месец, ден, година)
  • време – Време, независимо от деня (час, минута, секунда, микросекунда)
  • datetime – Комбинация от час и дата (месец, ден, година, час, секунда, микросекунда)
  • timedelta— Продължителност от време, използвана за манипулиране на дати
  • tzinfo— Абстрактен клас за работа с часови зони

Използване на обекти за дата и час

  • Импортирането на обекти за дата и час преди изпълнението на кода е задължително
  • Използване на функцията date.today за отпечатване на индивидуална дата/месец/година, както и индексиране на деня
  • Използване на обект date.time за получаване на време в часове, минути, секунди и милисекунди

Форматиране на Time-Out с „str f time function“

  • Използвайте функцията str f time, за да промените формата на годината
  • Отпечатайте ден, дата, месец и година отделно,
  • Време за извикване за всеки формат 12 часа или 24 часа

Timedelta обекти

  • С timedelta обектите можете да оцените времето както за бъдещето, така и за миналото
  • Изчислете общия брой оставащи дни за специалния ден (рожден ден) от текущия час
  • Изчислете общия брой изминали дни за специален ден (рожден ден) от текущия час