Loading...
Python

Կարող եք ձեր կոդը փորձարկել այստեղ

Python

Գլուխ 9. Աշխատանք ամսաթվերի և ժամերի հետ

Գործողություններ ամսաթվերով

Ամսաթվերի և ժամերի ձևաչափում
Ամսաթվի և ժամի օբյեկտները ձևաչափելու համար այս երկու դասերն էլ ապահովում են strftime(format) մեթոդը : Այս մեթոդը վերցնում է միայն մեկ պարամետր, որը ցույց է տալիս այն ձևաչափը, որին պետք է փոխարկվի ամսաթիվը կամ ժամը:

Ձևաչափը սահմանելու համար մենք կարող ենք օգտագործել հետևյալ ձևաչափման կոդերից մեկը.

%a . շաբաթվա օրվա հապավումը: Օրինակ, Wed - չորեքշաբթի բառից (անգլերեն անունները օգտագործվում են լռելյայն)

A : շաբաթվա օրն ամբողջությամբ, օրինակ՝ չորեքշաբթի

%b . ամսվա անվան հապավումը: Օրինակ՝ հոկտեմբեր (հոկտեմբերի կրճատ)

%B . ամսվա անվանումն ամբողջությամբ, օրինակ՝ հոկտեմբեր

%d : ամսվա օր, լրացված զրոյով, օրինակ՝ 01

%m . ամսվա համարը լրացված է զրոյով, օրինակ՝ 05

%y : տարին որպես 2 թվեր

%Y : տարին որպես 4 թվեր

%H : ժամ 24 ժամվա ձևաչափով, օրինակ՝ 13

I : ժամը 12 ժամվա ձևաչափով, օրինակ՝ 01

%M : րոպե

%S : վայրկյան

%f ՝ միկրովայրկյան

%p . AM/PM ցուցիչ

%c . ամսաթիվը և ժամանակը ձևաչափված են ընթացիկ տեղանքի համար

%x . ամսաթիվը ձևաչափված է ընթացիկ տեղանքի համար

%X . ժամանակը ձևաչափված է ընթացիկ տեղանքի համար

Մենք օգտագործում ենք տարբեր ձևաչափեր.
from datetime import datetime now = datetime.now() print(now.strftime("%Y-%m-%d")) # 2017-05-03 print(now.strftime("%d/%m/%Y")) # 03/05/2017 print(now.strftime("%d/%m/%y")) # 03/05/17 print(now.strftime("%d %B %Y (%A)")) # 03 May 2017 (Wednesday) print(now.strftime("%d/%m/%y %I:%M")) # 03/05/17 01:36
Շաբաթվա ամիսների և օրերի անունները ցուցադրելիս լռելյայն օգտագործվում են անգլերեն անունները: Եթե մենք ցանկանում ենք օգտագործել ընթացիկ տեղանքը, մենք կարող ենք նախադրել այն՝ օգտագործելով տեղայնացման մոդուլը.
from datetime import datetime import locale locale.setlocale(locale.LC_ALL, "") now = datetime.now() print(now.strftime("%d %B %Y (%A)")) # 03 Май 2017 (среда)
Ամսաթվերի և ժամերի գումարում և հանում
Հաճախ ամսաթվերի հետ աշխատելիս անհրաժեշտ է դառնում ամսաթվին որոշակի ժամանակ ավելացնել կամ հակառակը հանել որոշակի ժամանակահատված։ Եվ հատուկ նման գործողությունների համար timedelta դասը սահմանվում է datetime մոդուլում : Փաստորեն, այս դասը սահմանում է որոշակի ժամանակահատված:

Ժամանակահատվածը սահմանելու համար կարող եք օգտագործել timedelta կոնստրուկտորը.
timedelta([days] [, seconds] [, microseconds] [, milliseconds] [, minutes] [, hours] [, weeks])
Մենք հաջորդաբար օրեր, վայրկյաններ, միկրովայրկյաններ, միլիվայրկյաններ, րոպեներ, ժամեր և շաբաթներ ենք փոխանցում կոնստրուկտորին:

Սահմանենք մի քանի ժամանակաշրջան.
from datetime import timedelta three_hours = timedelta(hours=3) print(three_hours) # 3:00:00 three_hours_thirty_minutes = timedelta(hours=3, minutes=30) # 3:30:00 two_days = timedelta(2) # 2 days, 0:00:00 two_days_three_hours_thirty_minutes = timedelta(days=2, hours=3, minutes=30) # 2 days, 3:30:00
Օգտագործելով timedelta մենք կարող ենք ավելացնել կամ հանել ամսաթվերը: Օրինակ, եկեք ստանանք ամսաթիվ, որը կլինի երկու օրից.
from datetime import timedelta, datetime now = datetime.now() print(now) # 2017-05-03 17:46:44.558754 two_days = timedelta(2) in_two_days = now + two_days print(in_two_days) # 2017-05-05 17:46:44.558754
Կամ մենք կիմանանք, թե քանի ժամ է եղել 10 ժամ 15 րոպե առաջ, այսինքն՝ մենք իրականում պետք է հանենք 10 ժամ 15 րոպե ընթացիկ ժամանակից.
from datetime import timedelta, datetime now = datetime.now() till_ten_hours_fifteen_minutes = now - timedelta(hours=10, minutes=15) print(till_ten_hours_fifteen_minutes)
timedelta հատկությունները
Timedelta դասը ունի մի քանի հատկություններ, որոնցով մենք կարող ենք ստանալ ժամանակաշրջան.

օրեր : վերադարձնում է օրերի քանակը

վայրկյան : վերադարձնում է վայրկյանների քանակը

միկրովայրկյաններ : վերադարձնում է միկրովայրկյանների քանակը

Բացի այդ, total_seconds() մեթոդը վերադարձնում է վայրկյանների ընդհանուր թիվը, որը ներառում է օրեր, իրական վայրկյաններ և միկրովայրկյաններ:

Օրինակ, եկեք պարզենք, թե ինչ ժամանակահատված է երկու ամսաթվերի միջև.
from datetime import timedelta, datetime now = datetime.now() twenty_two_may = datetime(2017, 5, 22) period = twenty_two_may - now print("{} дней {} second {} microsecond".format(period.days, period.seconds, period.microseconds)) print("Всего: {} second".format(period.total_seconds()))
Ամսաթվերի համեմատություն
Ինչպես տողերն ու թվերը, ամսաթվերը կարելի է համեմատել՝ օգտագործելով ստանդարտ համեմատական օպերատորներ.
from datetime import datetime now = datetime.now() deadline = datetime(2017, 5, 22) if now > deadline: print("The project deadline has passed") elif now.day == deadline.day and now.month == deadline.month and now.year == deadline.year: print("Project due today") else: period = deadline - now print("Days left {}".format(period.days))

Մեկնաբանություն գրելու համար խնդրում ենք մուտք լինել