در پایتون ، کلاس های date ، time و datetime تعدادی تابع برای استفاده از تاریخ ، زمان و فواصل زمانی ارائه می دهند. date و datetime شیء هستند ، بنابراین وقتی از آن ها استفاده می کنید، در واقع از اشیاء استفاده می کنید و به صورت رشته یا timestamp نیستند. هر وقت که تاریخ یا زمان را بخواهید استفاده کنید ، باید تابع datetime را import کنید.
کلاس های datetime در پایتون به ۵ کلاس اصلی طبقه بندی می شوند.
- date – شکل درست تاریخ (ماه ، روز ، سال)
- time – زمان مستقل از روز (ساعت ، دقیقه ، ثانیه ، میکرو ثانیه)
- datetime – ترکیبی از زمان و تاریخ (ماه ، روز ، سال ، ساعت ، ثانیه ، میکرو ثانیه)
- timedelta— تخمین زمان آینده و گذشته.
- tzinfo— کلاس انتزاعی برای برخورد با مناطق زمانی
در این آموزش می آموزیم:
- نحوه استفاده از کلاس Date و DateTime
- چاپ تاریخ با استفاده از ()date.today
- تاریخ و زمان فعلی پایتون: ()now() today
- نحوه تولید خروجی تاریخ و زمان با ()Strftime
- نحوه استفاده از اشیاء Timedelta
نحوه استفاده از کلاس Date و DateTime
مرحله ۱) قبل از اجرای کد برای datetime ، باید ماژول های زمان و تاریخ را همانطور که در تصویر زیر نشان داده شده است import کنید.
مواردی که import می شوند قطعاتی از پیش تعریف شده از تایع در کتابخانه پایتون هستند که به شما امکان می دهد تا از تاریخ و زمان استفاده کنید ، بدون اینکه کد بنویسید.
قبل از اجرای کد datetime نکات زیر را در نظر بگیرید
from datetime import date
این خط به مترجم پایتون می گوید که از ماژول datetime کلاس date را import می کنیم.
مرحله ۲) بعد ، نمونه ای از شیء date ایجاد می کنیم.
مرحله ۳) تاریخ را چاپ می کنیم و کد را اجرا می کنیم.
خروجی همانطور است که انتظار می رود.
چاپ تاریخ با استفاده از()date.today
تابع date.today دارای چندین ویژگی است که با آن ارتباط دارند. ما می توانیم روز / ماه / سال و موارد دیگر را چاپ کنیم.
به مثال زیر توجه کنید:
شماره روز های هفته
تابع ()date.today شماره روز هفته را نیز به شما می دهد. جدول روزهای هفته در زیر آورده شده است.
تعداد روزهای هفته برای آرایه هایی که شاخص آن ها به روز هفته بستگی دارد مفید است.
تاریخ و زمان فعلی پایتون: هم اکنون()now() today
مرحله ۱) مانند اشیاء date ، همچنین می توانیم از “DATETIME OBJECTS” در پایتون استفاده کنیم که تاریخ را به همراه زمان در ساعت ، دقیقه ، ثانیه و میلی ثانیه نشان می دهد.
هنگامی که ما کد را برای datetime اجرا می کنیم ، خروجی را با تاریخ و ساعت فعلی نشان می دهد.
مرحله ۲) با “DATETIME OBJECT” ، همچنین می توانید کلاس time را فرا بخوانید.
فرض کنید می خواهیم فقط زمان فعلی را بدون تاریخ چاپ کنیم.
t = datetime.time(datetime.now())
کلاس time را import کرده بودیم. مقدار فعلی زمان را با استفاده از ()datetime.now بدست می آوریم.
- مقدار فعلی زمان را به متغیر t اختصاص می دهیم.
- و این فقط زمان فعلی را به ما می دهد. بیایید برنامه را اجرا کنیم.
خوب ، بنابراین می توانید ببینید که در اینجا از datetime استفاده کردیم و در ادامه، فقط زمان را به t اختصاص دادیم.
مرحله ۳) ما از فهرست نمایه روزهای هفته خود در لیست روزهای هفته ما استفاده خواهیم کرد تا بدانیم امروز کدام روز است
بسته به روز هفته ، به (wd) عدد (۰تا۶) اختصاص می یابد. در اینجا آرایه ای از روزهای هفته تعریف کردیم (دوشنبه ، سه شنبه ، چهارشنبه … یکشنبه).
از مقدار شاخص برای فهمیدن روز استفاده کردیم که شماره ۲ که چهارشنبه است را نشان می دهد ، بنابراین در خروجی چاپ خواهد شد ” Which is a Wednesday.”.
در اینجا کد کامل برای بدست آوردن تاریخ و زمان فعلی با استفاده از 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 در پایتون استفاده کرد. در قدم بعدی یاد می گیریم که چگونه از تابع قالب بندی برای قالب دادن به زمان و تاریخ استفاده کنیم.
مرحله ۱) ابتدا یک مرحله ساده برای چگونگی قالب بندی سال را خواهیم دید. بهتر است با مثال آن را درک کنید.
- برای قالب بندی از تابع “strftime” استفاده کردیم.
- این تابع از کد کنترل متفاوتی برای ارائه خروجی استفاده می کند.
- هر کد کنترل به پارامترهای مختلفی از قبیل سال ، ماه ، روز هفته و تاریخ شباهت دارد.
[(%y/%Y – Year), (%a/%A- weekday), (%b/%B- month), (%d – day of month)]
- در اینجا (“Y٪”) است که به سال شباهت دارد ، سال کامل را با قرن چاپ می کند (به عنوان مثال ، ۲۰۱۸).
مرحله ۲) اکنون اگر (“Y٪”) را با حروف کوچک ، یعنی (y٪”) جایگزین کنید و کد را اجرا کنید ، خروجی فقط (۱۸) است و ۲۰۱۸ نمایش داده نمی شود.
مرحله ۳) تابع Strf می تواند تاریخ ، روز ، ماه و سال را به طور جداگانه تعریف کند. همچنین با تغییراتی کوچک در کد کنترل در تابع strftime می توانید سبک متن را قالب بندی کنید.
در داخل تابع Striftime اگر (a٪) را با حرف بزرگ A ، یعنی (A ٪) جایگزین کنید ، خروجی به جای چاپ مخفف “Fri”، “Firday” را چاپ می کند.
مرحله ۴) با کمک تابع “Strftime” می توانیم زمان و تاریخ سیستم محلی، یا هر دو را بازیابی کنیم.
۱- C٪- تاریخ و زمان محلی را نشان می دهد
۲- x٪ – تاریخ محلی را نشان می دهد
۳- X ٪ – زمان محلی را نشان می دهد
در خروجی می توانید نتیجه را مطابق آنچه انتظار می رود مشاهده کنید.
مرحله ۵) ” strftime function” به شما امکان می دهد فرمت ۲۴ ساعته یا ۱۲ ساعته زمان را صدا بزنید.
فقط با تعریف کد کنترل مانند I / H ٪ برای ساعت ،٪ M برای دقیقه ،٪ S برای ثانیه ، می توان زمان را برای قالب های مختلف فراخوانی کرد.
قالب زمان ۱۲ ساعته تعریف شده است [(print now.strftime(“%I:%M:%S %P” ]
قالب زمان ۲۴ ساعته تعریف شده است [(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()
نحوه استفاده از Objects Timedelta
با اشیاء timedelta می توانید زمان آینده و گذشته را نیز تخمین بزنید. به عبارت دیگر ، یک timespan برای پیش بینی روز ، تاریخ یا زمان خاصی است.
به یاد داشته باشید این تابع برای چاپ زمان یا تاریخ نیست ، بلکه چیزی برای محاسبه ی آینده یا گذشته است. به مثال زیر توجه کنید.
مرحله ۱) برای اجرای Timedelta Objects ، ابتدا باید دستور import را نوشته و سپس کد را اجرا کنید.
۱- عبارت import را برای timedelta بنویسید.
۲- اکنون کد را برای چاپ کردن شیء از timedelta ، همانطور که در عکس نشان داده شده است ، بنویسید.
۳- کد را اجرا کنید. timedelta مدت زمان ۳۶۵ روز ، ۸ ساعت و ۱۵ دقیقه را نشان می دهد و همان را چاپ می کند.
گیج کننده؟ مرحله بعدی کمک خواهد کرد-
مرحله ۲) تاریخ و زمان امروز را می گیریم تا بررسی کنیم آیا عبارت import ما به خوبی کار می کند یا خیر. هنگامی که کد اجرا شد ، تاریخ امروز را چاپ می کند ، به این معنی که عبارت import به خوبی کار می کند.
مرحله ۳) خواهیم دید که چگونه می توانیم تاریخ یک سال را از طریق اشیاء timedelta بازیابی کنیم. وقتی کد را اجرا می کنیم ، همانطور که انتظار می رود ، خروجی را ارائه می دهد.
مرحله ۴) نمونه دیگری از چگونگی استفاده از timedelta برای محاسبه تاریخ آینده از تاریخ و زمان فعلی.
مرحله ۵) بیایید به یک مثال پیچیده تر بپردازیم. می خواهیم حساب کنیم چند روز از سال نو را سپری کرده ایم.
- Using today()= date.today به تاریخ امروز خواهیم رسید.
- می دانیم که سال نو همیشه در تاریخ ۱ ژانویه است ، اما سال می تواند متفاوت باشد. با استفاده از (nyd= date(today.year,1,1 سال جدید را در متغیر nyd ذخیره می کنیم.
- if nyd < today: مقایسه می کند که آیا تاریخ فعلی بیشتر از سال جدید است. اگر بله ، وارد حلقه while می شود.
- ((today-nyd).days) تفاوت بین تاریخ فعلی و سال جدید را در DAYS نشان می دهد.
خروجی برابر است با: “New Year Day already went by 11 days ago.”
کد کامل:
#
# 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))
مثال پایتون ۲
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 کلاس ها یا دسته بندی های مختلفی را ارائه می دهد.
- date – شکل درست تاریخ (ماه ، روز ، سال)
- time – زمان مستقل از روز (ساعت ، دقیقه ، ثانیه ، میکرو ثانیه)
- datetime – ترکیبی از زمان و تاریخ (ماه ، روز ، سال ، ساعت ، ثانیه ، میکرو ثانیه)
- timedelta— تخمین زمان آینده و گذشته.
- tzinfo— یک کلاس انتزاعی برای برخورد با مناطق زمانی
استفاده از اشیاء datetime
- Import کردن اشیاء datetime قبل از اجرای کد الزامی است.
- استفاده از تابع date.today برای چاپ تاریخ به فرم روز / ماه / سال و همچنین نشان دادن روز
- استفاده از شی date.time برای گرفتن زمان در قالب ساعت ، دقیقه ، ثانیه و میکرو ثانیه
قالب بندی Time-Out با “تابع strftime “
- برای تغییر قالب سال از “تابع strftime ” استفاده کنید.
- روز ، تاریخ ، ماه و سال را به طور جداگانه چاپ کنید.
- برای قالب ۱۲ ساعته یا ۲۴ ساعته out time را فراخوانی کنید.
اشیاء Timedelta
- با اشیاء timedelta می توانید زمان آینده و گذشته را تخمین بزنید.
- کل روزهای باقی مانده به یک روز ویژه (مثلا تولد) را از زمان فعلی محاسبه کنید.
- کل روزهای گذشته از روز ویژه (مثلا تولد) را از زمان فعلی محاسبه کنید.