آشنایی با زمان – Time در پایتون

توابع زمان در پایتون

با سلام و ردود، در این مطلب مقداری در مورد زمان – Time در پایتون و توابع موجود برای زمان و تبدیل آن و غیره در پایتون صحبت خواهم کرد.

مرجع اصلی این مطلب خود اسناد پایتون می باشد 🙂

توجه داشته باشید، در این مطلب ما با Time کار داریم، نه DateTime و Calendar. در آینده در مورد این دو مورد نیز صحبت خواهم کرد، ولی فعلا بحثمون روی Time هست.

اکثر توابع استفاده شده در ماژول Time از کتابخانه توابع C و با همان نام ها گرفته شده است.

epoch چیست؟

epoch نقطه ای است که زمان از آن شروع شده و به پلتفرمی که از آن استفاده می کنید بستگی دارد. برای Unix مقدار epoch برابر با ۱م ژانویه سال ۱۹۷۰ و ساعت ۰۰:۰۰:۰۰ به وقت گرینویچ می باشد (January 1, 1970, 00:00:00 (UTC)) ، برای بدست آوردن مقدار epoch روی پلتفرم خودتون از time.gmtime(0) استفاده کنید.

واژه seconds since the epoch اشاره بر تعدا کل ثانیه ها از زمان epoch می باشد، که البته Leap Seconds ها (ثانیه کبیسه – برای مطالعه بیشتر اینجا را بخوانید) را در نظر نگرفته است.

نکات

  • توابع این ماژول تاریخ و زمان های قبل از epochیا خیلی آینده را مدیریت نمی کند. قسمت ایست زمان آینده اش، سال ۲۰۳۸ به دلیل سیستم های ۳۲ بیتی و کتابخانه C است.
  • تابع strptime() می تواند سال ها را زمانی که فرمت کد %y را به آن می دهیم، دورقمی پارز کند. مقادیر ۶۹-۹۹ به سال های ۱۹۶۹-۱۹۹۹ اشاره دارد و مقادیر ۰-۶۸ به سال های ۲۰۰۰-۲۰۰۶۸ اشاره دارد.
  • DST یا Daylight Saving Time، ساعتی است که در تابستان و بهار جلو یا عقب کشیده میشه (ساعت قدیم و جدیدی که تو ایران خودمون رایج هست ). مقادیر DST تو هر جایی با توجه به قوانینشون فرق میکنه، ممکن یه اسل داشته باشند و یه سال نداشته باشند، تو ایران خودمون هم تو دوره احمدی نژاد یک یا دو سال تغییر ساعت نداشتیم. این ماژول اطلاعات DST را از فاسل های سیستمی می خواند.
  • struct_time ، نوعی از توالی نمایش زمان هست که توسط توابع gmtime()، localtime() و strptime() برگشت داده می شود. اینجا رو یه نگاه بندازید. خروجی struct_time به صورت tuple-چند تایی هست و با index به مقادریش می توان دسترسی داشت.

توابع

time.asctime([t])

چندتایی یا tuple که struct_time زمان را با آن نشان می دهد را به فرمت یک رشته متنی (String) به ما بر می گرداند، به شکل زیر :

‘Sun Jun 20 23:21:05 1993’

time.strftime(format[, t])

مانند تابع فوق خروجی Struct_timeرا به یک رشته متنی، اما با فرمت مورد نظر ما تبدیل می کند.

برای فرمت دادن از جدول زیر باید استفاده کرد :

به مثال زیر توجه کنید :

>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
'Thu, 28 Jun 2001 14:17:15 +0000'