tzset(3)

الاسم
tzset, tzname, timezone, daylight - دالة تهيئة معلومات تحويل الوقت

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <time.h>

void tzset(void);

extern char *tzname[2];
extern long timezone;
extern int daylight;

    متطلبات ماكروات اختبار الميزات لـ glibc (انظر feature_test_macros(7)):

tzset():
    _POSIX_C_SOURCE

tzname:
    _POSIX_C_SOURCE

timezone, daylight:
    _XOPEN_SOURCE
        || /* glibc >= 2.19: */ _DEFAULT_SOURCE
        || /* glibc <= 2.19: */ _SVID_SOURCE

الوصف
الدالة tzset() تهيئ المتغير tzname من متغير البيئة TZ. تُستدعى هذه الدالة آليًا بواسطة دوال تحويل الوقت الأخرى التي تعتمد على المنطقة الزمنية. في بيئة شبيهة بـ System-V، ستُعيِّن أيضًا المتغيرين timezone (بالثواني غرب UTC) و daylight (إلى 0 إذا لم تكن لهذه المنطقة الزمنية قواعد توقيت صيفي، أو إلى قيمة غير صفرية إذا كان هناك وقت، ماضٍ أو حاضر أو مستقبل، يُطبق فيه التوقيت الصيفي).

الدالة tzset() تهيئ هذه المتغيرات إلى قيم غير محددة إذا كانت هذه المنطقة الزمنية منطقة زمنية جغرافية مثل "America/New_York" (انظر أدناه).

إذا لم يظهر المتغير TZ في البيئة، تُستخدم المنطقة الزمنية للنظام. تُهيَّأ المنطقة الزمنية للنظام بنسخ أو ربط ملف بصيغة tzfile(5) إلى /etc/localtime. قد توجد قاعدة بيانات للمناطق الزمنية لهذه الملفات في دليل المناطق الزمنية للنظام (انظر قسم FILES أدناه).

إذا ظهر المتغير TZ في البيئة، لكن قيمته فارغة، أو لا يمكن تفسير قيمته باستخدام أي من الصيغ المحددة أدناه، فسيُستخدم التوقيت العالمي المنسق (UTC).

يمكن أن تكون القيمة غير الفارغة لـ TZ واحدة من صيغتين، يمكن أن تسبق أي منهما بنقطتين رأسيتين يتم تجاهلهما. الصيغة الأولى هي سلسلة محارف تمثل مباشرة المنطقة الزمنية المراد استخدامها:

    std offset[dst[offset][,start[/time],end[/time]]]

لا توجد مسافات في المواصفات. تحدد سلسلة المحارف std اختصارًا للمنطقة الزمنية ويجب أن تتكون من ثلاثة أحرف أبجدية أو أكثر. عندما تُحصر بين علامتي أقل من (<) وأكبر من (>)، تتوسع مجموعة المحارف لتشمل علامة الجمع (+) وعلامة الطرح (-) والأرقام. تتبع سلسلة المحارف offset مباشرة std وتحدد قيمة الوقت المراد إضافتها إلى الوقت المحلي للحصول على التوقيت العالمي المنسق (UTC). تكون offset موجبة إذا كانت المنطقة الزمنية المحلية غرب خط الطول الرئيسي وسالبة إذا كانت شرقه. يجب أن تكون الساعة بين 0 و24، والدقائق والثواني بين 00 و59:

    [+|-]hh[:mm[:ss]]

تحدد سلسلة المحارف dst و offset الاسم والإزاحة للمنطقة الزمنية الصيفية المقابلة. إذا حُذفت الإزاحة، فستكون مبدئيًا قبل التوقيت القياسي بساعة واحدة.

يحدد الحقل start متى يدخل التوقيت الصيفي حيز التنفيذ، ويحدد الحقل end متى يُجرى التغيير عائدًا إلى التوقيت القياسي. قد تكون لهذه الحقول الصيغ التالية:

Jn  يحدد هذا اليوم اليولياني مع n بين 1 و365. لا تُحتسب أيام الكبس. في هذه الصيغة، لا يمكن تمثيل 29 فبراير؛ 28 فبراير هو اليوم 59، و1 مارس هو دائمًا اليوم 60.

n   يحدد هذا اليوم اليولياني ذا الأساس الصفري مع n بين 0 و365. يُحتسب 29 فبراير في السنوات الكبيسة.

Mm.w.d
    يُحدد هذا اليوم d (0 <= d <= 6) من الأسبوع w (1 <= w <= 5) من الشهر m (1 <= m <= 12). الأسبوع 1 هو أول أسبوع يحدث فيه اليوم d والأسبوع 5 هو آخر أسبوع يحدث فيه اليوم d. اليوم 0 هو الأحد.

تحدد حقول time متى، في التوقيت المحلي الساري حالياً، يحدث التغيير إلى التوقيت الآخر. تستخدم نفس تنسيق offset باستثناء أن الساعة يمكن أن تكون في النطاق [-167, 167] لتمثيل الأوقات قبل وبعد اليوم المسمى. إذا حُذفت، فالمبدئي هو 02:00:00.

هذا مثال لنيوزيلندا، حيث التوقيت القياسي (NZST) يسبق UTC بـ12 ساعة، والتوقيت الصيفي (NZDT)، يسبق UTC بـ13 ساعة، يمتد من آخر أحد في سبتمبر، في الوقت المبدئي 02:00:00، إلى أول أحد في أبريل عند 03:00:00.

    TZ="NZST-12:00:00NZDT-13:00:00,M9.5.0,M4.1.0/3"

التنسيق الثاني —أو "الجغرافي"— يحدد أن معلومات المنطقة الزمنية يجب أن تُقرأ من ملف:

    filespec

يحدد filespec ملفاً بتنسيق tzfile(5) لقراءة معلومات المنطقة الزمنية منه. إذا لم يبدأ filespec بـ '/'، فإن مواصفات الملف تكون نسبية لدليل المنطقة الزمنية للنظام. إذا تعذرت قراءة الملف المحدد أو تفسيره، يُستخدم التوقيت العالمي المنسق (UTC)؛ ومع ذلك، لا ينبغي للتطبيقات الاعتماد على قيم filespec عشوائية لتمثيل UTC، حيث قد تُوسع تنسيقات TZ في المستقبل.

هذا مثال، مرة أخرى لنيوزيلندا:

    TZ="Pacific/Auckland"

البيئة

TZ  إذا عُيّن هذا المتغير، فإن قيمته لها الأولوية على المنطقة الزمنية المكونة للنظام.

TZDIR
    إذا عُيّن هذا المتغير، فإن قيمته لها الأولوية على مسار دليل قاعدة بيانات المنطقة الزمنية المكونة للنظام.

الملفات

/etc/localtime
    ملف المنطقة الزمنية للنظام.

/usr/share/zoneinfo/
    دليل قاعدة بيانات المنطقة الزمنية للنظام.

/usr/share/zoneinfo/posixrules
    عندما تتضمن سلسلة TZ منطقة زمنية للتوقيت الصيفي دون أي شيء يتبعها، يُستخدم هذا الملف لقواعد البداية/النهاية. هو بتنسيق tzfile(5). مبدئياً، يقوم Makefile الخاص بـ zoneinfo بربطه بشكل ثابت بملف tzfile America/New_York.

ما سبق هو مواقع الملفات القياسية الحالية، لكنها قابلة للتكوين عند تجميع glibc.

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
tzset() | سلامة الخيوط | بيئة محلية آمنة لتعدد الخيوط (MT-Safe)

المعايير
POSIX.1-2024.

التاريخ

tzset()
tzname
    POSIX.1-1988, SVr4, 4.3BSD.

timezone
daylight
    POSIX.1-2001 (XSI), SVr4, 4.3BSD.

احتوت 4.3BSD على دالة char *timezone(zone, dst) أعادت اسم المنطقة الزمنية المطابقة لوسيطها الأول (بالدقائق غرب UTC). إذا كان الوسيط الثاني 0، استُخدم الاسم القياسي، وإلا استُخدم إصدار التوقيت الصيفي.

تحذيرات
لأن قيم tzname وtimezone وdaylight غالبًا ما تكون غير محددة، وقد يؤدي الوصول إليها إلى سلوك غير محدد في التطبيقات متعددة الخيوط، ينبغي للكود بدلاً من ذلك الحصول على إزاحة المنطقة الزمنية واختصاراتها من العضوين tm_gmtoff وtm_zone في بنية الوقت المفصلة tm(3type).

العلل
بما أن هذه الدالة لا تُبلغ عن الأخطاء، فلا توجد طريقة لمعرفة ما إذا كانت قيمة TZ تمثل منطقة زمنية صالحة.

انظر أيضًا
date(1), gettimeofday(2), time(2), ctime(3), getenv(3), tzfile(5)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.