دوال التاريخ والوقت في لغة C
تُعدّ دوال التاريخ والوقت في لغة C مجموعة من الدوال في المكتبة القياسية للغة البرمجة C، وهي تُنفّذ عمليات معالجة التاريخ والوقت. [ 1 ] وتُوفّر هذه الدوال دعمًا للحصول على الوقت ، والتحويل بين تنسيقات التاريخ، وإخراج البيانات بتنسيق نصي.
تاريخ
يعود استخدام سلسلة التنسيق في التتبعات إلى PWB/UNIX 1.0strftime على الأقل ، والذي صدر عام 1977. يتضمن أمر النظام الخاص به خيارات تنسيق متنوعة. [ 2 ] [ 3 ] في عام 1989، صدر معيار ANSI C متضمنًا وظائف التاريخ والوقت الأخرى. [ 4 ]datestrftime
نظرة عامة على الوظائف
يتم تعريف عمليات التاريخ والوقت في لغة C في <time.h>ملف الرأس ( <ctime>الرأس في لغة C++ ).
| المعرف | وصف | |
|---|---|---|
| التلاعب بالزمن | difftime | يحسب الفرق بالثواني بين time_tقيمتين |
time | تُعيد هذه الدالة الوقت الحالي للنظام كقيمة time_t، وهي عدد الثواني (عادةً ما تكون المدة الزمنية منذ بداية حقبة زمنية ، وتحديدًا حقبة يونكس ). وتختلف قيمة الحقبة الزمنية باختلاف نظام التشغيل؛ وغالبًا ما تُستخدم القيمتان 1900 و1970. انظر RFC 868. | |
clock | يُعيد عدد دورات المعالج المرتبطة بالعملية | |
timespec_get(C11) | يُعيد وقت التقويم بناءً على قاعدة زمنية | |
| تحويلات التنسيق | asctime | يحوّل struct tmكائنًا إلى تمثيل نصي (مهمل) |
ctime | يحوّل time_tقيمة إلى تمثيل نصي | |
strftime | يحوّل struct tmكائنًا إلى تمثيل نصي مخصص | |
strptime | يحوّل سلسلة نصية تحتوي على معلومات الوقت إلىstruct tm | |
wcsftime | يحوّل struct tmكائنًا إلى تمثيل نصي مخصص لسلسلة عريضة | |
gmtime | يحول time_tقيمة إلى وقت تقويمي معبر عنه بالتوقيت العالمي المنسق [ 5 ] | |
localtime | يحوّل time_tالقيمة إلى وقت تقويمي معبر عنه بالتوقيت المحلي | |
mktime | يحول الوقت التقويمي إلى time_tقيمة. | |
| الثوابت | CLOCKS_PER_SEC | عدد نبضات ساعة المعالج في الثانية |
TIME_UTC | التوقيت العالمي المنسق (UTC) | |
| الأنواع | struct tm | نوع الوقت في التقويم المفصل : السنة، الشهر، اليوم، الساعة، الدقيقة، الثانية |
time_t | نوع الوقت الحسابي (عادةً الوقت منذ حقبة يونكس ) | |
clock_t | نوع وقت تشغيل العملية | |
struct timespec | الوقت بالثواني والنانو ثانية |
timespecاقترح ماركوس كون في الأصل نوعيْ `T` و`T` المرتبطين به لتوفير مجموعة متنوعة من قواعد الوقت، ولكن لم يُقبل سوى `T` . TIME_UTC[ 6 ] ومع ذلك، أُضيفت هذه الوظائف إلى لغة C++ مع إصدار C++20 في عام 2000 std::chrono.
مثال
يقوم كود المصدر C التالي بطباعة الوقت الحالي إلى دفق الإخراج القياسي .
#include <stdio.h> #include <stdlib.h> #include <time.h>int main ( void ) { // الحصول على الوقت الحالي. time_t current_time = time ( NULL );إذا كان الوقت الحالي يساوي ( الوقت الحالي ) - 1 ، فسيتم طباعة رسالة خطأ إلى الخطأ القياسي تفيد بفشل الحصول على الوقت الحالي. ثم يتم إرجاع رمز الخطأ EXIT_FAILURE .// تحويل إلى تنسيق التوقيت المحلي. char * time_string = ctime ( & current_time );إذا لم يتم تحويل الوقت الحالي ، فسيتم طباعة رسالة خطأ إلى الخطأ القياسي ، وسيتم إرجاع رمز الخطأ EXIT_FAILURE .// اطبع إلى الإخراج القياسي. لقد أضافت الدالة ctime() بالفعل حرف سطر جديد. printf ( "الوقت الحالي هو %s" , time_string ); return EXIT_SUCCESS ; }الناتج هو:
الوقت الحالي هو الخميس 15 سبتمبر 2016، الساعة 21:18:23انظر أيضاً
مراجع
- ↑ مواصفات ISO/IEC 9899:1999 (PDF) . ص 351، § 7.32.2.
- ↑ "أمر نظام التاريخ PWB1 - صفحة الدليل" . www.tuhs.org .
- ↑ "شفرة المصدر date.c الخاصة بـ PWB1" . www.tuhs.org .
- ↑ " الأساس المنطقي للمعيار الوطني الأمريكي لنظم المعلومات - لغة البرمجة - لغة C - التاريخ والوقت" . www.lysator.liu.se
- ↑ open-std.org - مسودة اللجنة - 6 مايو 2005، صفحة 355
- ↑ ماركوس كون. " واجهة برمجة تطبيقات مُحدثة لـ ISO C" . cl.cam.ac.uk.
روابط خارجية
- مكتبة C القياسية
- وقت
