التاريخ والوقت مع لغة بايثون python

يمكن التحكم بالوقت والتاريخ بعدة طرق. التحويل بين صيع التاريخ أمر شائع للغاية في الحواسيب. ضبط الوقت والتقويم في لغة البرمجة python يساعد في تعقب التواريخ والوقت.


ماهي العلامة؟

الفواصل الزمنية عبارة عن أرقام بالفاصلة العائمة وتكون من مرتبة الثانية ويتم التعبير عنها بالثواني منذ 12:00am, January 1, 1970 .
هناك العديد من وحدات الزمن المستخدمة في لغة البرمجة Python والتي تؤمن العديد من التوابع للعمل مع الزمن وللتحويل بين أنماط الزمن. التابع time.time() يعيد النظام الحالي للعلامات منذ 12:00am, January 1, 1970.

مثال

#!/usr/bin/python

import time; # This is required to include time module.

ticks = time.time()

print "Number of ticks since 12:00am, January 1, 1970:", ticks

عندها تظهر النتيجة التالية

Number of ticks since 12:00am, January 1, 1970: 7186862.73399

إن عملية حساب البيانات سهلة للتنفيذ مع العلامات, التواريخ قبل epoch

لا مكن تمثيلها بهذه الصيغة كما أن التواريخ المستقبلية لا يمكن تمثيلها أيضاً.


ما هو صف الزمن؟

العديد من التوابع المستخدمة للتعامل مع الزمن هي عبارة عن صف من 9أرقام كما هو مبين في الجدول التالي

المؤشر الحقل القيمة
0 4-digit year 2008
1 Month 1 to 12
2 Day 1 to 31
3 Hour 0 to 23
4 Minute 0 to 59
5 Second 0 to 61 (60 or 61 are leap-seconds)
6 Day of Week 0 to 6 (0 is Monday)
7 Day of year 1 to 366 (Julian day)
8 Daylight savings -1, 0, 1, -1 تعني محددات المكتبة DST

 

إن الصف السابق موافق للتركيب struct_time وهذا التركيب يتميز بالسمات التالية:

المؤشر السمات القيم
0 tm_year 2008
1 tm_mon 1 to 12
2 tm_mday 1 to 31
3 tm_hour 0 to 23
4 tm_min 0 to 59
5 tm_sec 0 to 61 (60 or 61 are leap-seconds)
6 tm_wday 0 to 6 (0 is Monday)
7 tm_yday 1 to 366 (Julian day)
8 tm_isdst -1, 0, 1, -1 تعني محددات المكتبة DST

 


الحصول على الزمن الحالي

لتحويل لحظة الزمن من الثواني على شكل قيمة الفاصلة العائمة بالصيغة epoch إلى صف الزمن, يتم إدخال القيمة ذات الفاصلة العائمة إلى التابع الذي يعيد صف الزمن مع البنود ال 9 المتوفرة.

مثال

#!/usr/bin/python

import time;

localtime=time.localtime(time.time())

print"Local current time :",localtime

فتظهر النتيجة التالية

Local current time : time.struct_time(tm_year=2013, tm_mon=7,

tm_mday=17, tm_hour=21, tm_min=26, tm_sec=3, tm_wday=2, tm_yday=198, tm_isdst=0)

الحصول على الوقت المصاغ (المنسق)

يمكن صياغة الوقت بالطريقة التي يريدها المستخدم ولكن الطريقة المثلى للحصول على الوقت بطريقة مقروءة هي استخدام التابع asctime()

#!/usr/bin/python

import time;

localtime=time.asctime(time.localtime(time.time()))

print"Local current time :",localtime

فتظهر النتيجة التالية

Local current time :TueJan1310:17:092009

الحصول على التقويم لشهر

تعطي وحدة التقويم خيارات واسعة للتعامل مع التقويم الشهري والسنوي, يمثل التالي تقويماً لشهر معطى هو كانون الثاني 2008

#!/usr/bin/python

import calendar

cal=calendar.month(2008,1)

print"Here is the calendar:"

printcal;

فتظهر النتيجة التالية

Here is the calendar:
    January 2008
Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

وحدة الزمن

هناك العديد من وحدات الزمن المستخدمة في لغة البرمجة Python والتي تؤمن العديد من التوابع للعمل مع الزمن وللتحويل بين أنماط الزمن.
يبين الجدول التالي الطرق المتاحة

الرقم التسلسلي التابع والوصف
1 time.altzone إزاحة DST التوقيت المحلي بضع في ثوان غرب UTC. ويكون سلبيا إذا كان DST التوقيت المحلي شرق UTC.
2 time.asctime([tupletime]) تقبل صف الزمن وتعيد سلسلة قابلة للقراءة من 24 حرف. مثل Tue Dec 11 18:07:14 2008′.
3 time.clock( ) تعيد الوقت CPUكرقم بالفاصلة العائمة من الثواني. لقياس التكاليف الحسابية من المناهج المختلفة وقيمة الوقت فإن الساعة مفيدة جداً أكتر من التعليمة time.time() .
4 time.ctime([secs]) تشبه ال asctime(localtime(secs)) ومن دون مدخلات تشبه ال asctime( ).
5 time.gmtime([secs]) تقبل اللحظة الزمنية بالثانية وتعيد صف الزمن t مع الزمنUTC مع ملاحظة أن t.tm_isdst دوماً تأخذ القيمة صفر.
6 time.localtime([secs])تقبل اللحظة الزمنية بالثانية وتعيد صف الزمنt مع الزمن المحلي .
7 time.mktime(tupletime) تقبل اللحظة الزمنية كصف زمن بالتوقيت المحلي وتعيد قيمة الفاصلة العائمة معبراً عنها بالثواني.
8 time.sleep(secs) تعلق استدعاء الثواني secs.
9 time.strftime(fmt[,tupletime]) يقبل اللحظة الزمنية معبراً عنها كصف زمن بالتوقيت المحلي ويعيد سلسلة تمثل اللحظة الزمنية موصوفة بالسلسلة fmt .
10 time.strptime(str,fmt=’%a %b %d %H:%M:%S %Y’) يوزع ال str وفقاً للسلسلة fmt ويعيد اللحظة الزمنية بصيغة صف الزمن.
11 time.time( ) تعيد اللحظة الزمنية الحالية, عدد الثواني كرقم بالفاصلة العائمة.
12 time.tzset() تعيد ضبط قواعد التحويل الزمني باستخدام المكتبة الاعتيادية.

يمثل الجدول التالي السمتين الأكثر أهمية والمتوفرتين في وحدة الزمن

الرقم التسلسلي السمة مع الوصف
1 time.timezone سمة الوقت. تمثل المنطقة الزمنية إزاحة في الثواني للمنطة الزمنية المحلية .
2 time.tzname سمة الوقت. تمثل زوجاً من السلسلاسل المحلية المرتبطة والتي تسمي المنطقة الزمنية المحلية بدون أو مع DST.

 


وحدة التقويم

تتضمن هذه الوحدة على توابع مرتبط بالتقويم بما في ذلك التوابع المستخدمة لطباعة نص التقويم من أجل شهر أو سنة معطاة. ويشكل افراضي فإن التقويم يأخذ الاثنين كأول أيام الأسبوع والأحد آخرها ولتغغير ذلك يتم استدعاء التابع setfirstweekday()

يمثل الجدول التالي قائمة بالتوابع المتوفرة في وحدة التقويم:

الرقم التسلسلي التابع والوصف
1 calendar.calendar(year,w=2,l=1,c=6) تقوم بإرجاع سلسلة متعددة الأسطر مع وضع جدول زمني لمدة سنة في ثلاثة أعمدة مفصولة بمسافات c حيث w هو العرض لأحرف كل تاريخ وكل سطر له طول 21*w+18+2*c .I تمثل عدد الأسطر لكل أسبوع.
2 calendar.firstweekday( )تعيد الضبط الحالي ليوم الأسبوع الذي يبدأ عنده الأسبوع وبشكل افتراضي عندما يتم استيراد التقويم أولاً تكون القيمة 0 مما يعني يوم الاثنين.
3 calendar.isleap(year) تعيد القيمة صح إذا كانت السنة سنة طفرة ويعيد القيمة خطأ في حال عكس ذلك.
4 calendar.leapdays(y1,y2) تعيد العدد الكلي للايام الطفرة في السنة ضمن المجال range(y1,y2).
5 calendar.month(year,month,w=2,l=1)تقوم بإرجاع سلسلة متعددة الأسطر مع وضع جدول زمني لشهر من السنة. سطر للأسبوع بالإضافة إلى سطرين رئيسيين.
6 calendar.monthcalendar(year,month) بإرجاع قائمة من قوائم [ints]. كل قائمة فرعية تدل على الأسبوع. يتم تعيين الأيام خارج الشهر بالدليل 0؛ ويتم تعيين الأيام خلال الشهر وفقاً لليوم خلال الشهر أي 1 وما فوق.
7 calendar.monthrange(year,month) تعيد رقمين صحيحين. الأول يمثل شيفرة اليوم الأول من الشهر والثاني يمثل عدد الأيام في الشهر.
8 calendar.prcal(year,w=2,l=1,c=6) تشبه طباعة التقويم calendar(year,w,l,c).
9 calendar.prmonth(year,month,w=2,l=1) تشبه طباعة التقويم month(year,month,w,l).
10 calendar.setfirstweekday(weekday) تضبط اليوم الأول لكل أسبوع حيث شيفرة أيام الأسبوع هي 0 ليوم الاثنين و6 ليوم الأحد.
11 calendar.timegm(tupletime) يستخدم لعكس الزمن gmtime تقبل اللحظة الزمنية كصف الزمن وتعيد اللحظة الزمنية نفسها كرقم بالفاصلة العائمة يمثل الثواني .
12 calendar.weekday(year,month,day) تعيد شيفرة اليوم الأسبوعي كرقم بالفاصلة العائمة يمثل الثواني

الوحدات والتوابع الأخرى