zic(8) System Manager's Manual zic(8)

zic - کامپایلر اطلاعات مناطق زمانی سیستم (Timezone Compiler)

zic [ option ... ] [ filename ... ]

برنامه zic متن را از فایل (یا فایل‌های) نام‌برده‌شده در خط فرمان می‌خواند و فایل‌های قالب اطلاعات منطقه زمانی (TZif) مشخص‌شده در این ورودی را ایجاد می‌کند. اگر یک filename به‌صورت “-” باشد، ورودی استاندارد خوانده می‌شود.

اطلاعات نسخه را نمایش داده و خارج می‌شود.
پیام کوتاه نحوه استفاده را نمایش داده و خارج می‌شود.
داده‌های سازگاری رو به عقب (backward-compatibility) را همان‌گونه که توسط bloat مشخص شده است خروجی می‌دهد. اگر bloat برابر با fat باشد، ورودی‌های داده اضافی تولید می‌کند تا اشکالات یا ناسازگاری‌های احتمالی در نرم‌افزارهای قدیمی‌تر، مانند نرم‌افزاری که داده‌های ۶۴ بیتی تولیدشده را به‌درستی مدیریت نمی‌کند، برطرف شوند. اگر bloat برابر با slim باشد، اندازه فایل‌های خروجی را کوچک نگه می‌دارد؛ این امر می‌تواند به بررسی اشکالات و ناسازگاری‌ها کمک کند. مقدار پیش‌فرض slim است، زیرا نرم‌افزاری که داده‌های ۶۴ بیتی را نادرست پردازش می‌کند، معمولاً برچسب‌های زمانی پس از سال ۲۰۳۸ را نیز به‌هرحال نادرست پردازش می‌کند. همچنین گزینه -r را برای روشی دیگر جهت تغییر اندازه خروجی ببینید.
فایل‌های اطلاعات تبدیل زمان را به‌جای دایرکتوری استاندارد ذکرشده در زیر، در دایرکتوری نام‌برده‌شده ایجاد می‌کند.
از timezone به‌عنوان زمان محلی استفاده می‌کند. zic به‌گونه‌ای عمل خواهد کرد که گویی ورودی حاوی یک خط پیوند به شکل زیر بوده است:

Link timezone localtime

اگر timezone برابر با - باشد، هر پیوند از قبل موجود حذف می‌شود.

اطلاعات ثانیه‌های کبیسه را از فایلی با نام داده‌شده می‌خواند. اگر از این گزینه استفاده نشود، هیچ اطلاعاتی در مورد ثانیه کبیسه در فایل‌های خروجی ظاهر نخواهد شد.
هنگام مدیریت رشته‌های غیراستاندارد TZ مانند "EET-2EEST" که فاقد قواعد تغییر هستند، از قواعد timezone استفاده می‌کند. zic به‌گونه‌ای عمل خواهد کرد که گویی ورودی حاوی یک خط پیوند به شکل زیر بوده است:

Link timezone posixrules

اگر timezone برابر با “-” (پیش‌فرض) باشد، هر پیوند از قبل موجود حذف می‌شود.

مگر اینکه timezone برابر با “-” باشد، این گزینه منسوخ شده و پشتیبانی ضعیفی دارد. از جمله موارد دیگر، نباید برای برچسب‌های زمانی پس از سال ۲۰۳۷ استفاده شود، و نباید با گزینه -b slim ترکیب شود اگر تغییرات timezone به‌جای زمان محلی، در زمان استاندارد یا زمان جهانی (UT) باشند.

قابلیت اعمال فایل‌های خروجی را به برچسب‌های زمانی در محدوده از lo (شامل) تا hi (غیرشامل) محدود می‌کند، که در آن lo و hi تعداد ثانیه‌های ده‌دهیِ احتمالاً علامت‌دار از مبدأ زمان (Epoch؛ 1970-01-01 00:00:00 UTC) هستند. شمارش‌های حذف‌شده به‌طور پیش‌فرض به مقادیر انتهایی (کرانه‌ای) تنظیم می‌شوند. فایل‌های خروجی از آفست UT برابر ۰ و اختصار “-00” به‌جای داده‌های برچسب زمانی حذف‌شده استفاده می‌کنند. برای نمونه، “zic -r @0” داده‌های مربوط به برچسب‌های زمانی منفی (یعنی پیش از Epoch) را حذف می‌کند، و “zic -r @0/@2147483648” داده‌هایی را خروجی می‌دهد که فقط برای برچسب‌های زمانی نامنفی در نظر گرفته شده‌اند که در اعداد صحیح ۳۱ بیتی علامت‌دار جا می‌گیرند. روی پلتفرم‌های دارای GNU date، دستور “zic -r @$(date +%s)” داده‌های مربوط به برچسب‌های زمانی گذشته را حذف می‌کند. اگرچه این گزینه معمولاً اندازه فایل خروجی را کاهش می‌دهد، اما اندازه به دلیل نیاز به نمایش مرزهای محدوده برچسب زمانی می‌تواند افزایش یابد، به‌ویژه اگر hi باعث شود یک فایل TZif شامل ورودی‌های صریح برای تغییرات pre-hi باشد، به‌جای اینکه آن‌ها را به‌طور مختصر با یک رشته گسترش‌یافته POSIX.1-2017 TZ نمایش دهد. همچنین گزینه -b slim را برای روشی دیگر جهت کاهش اندازه خروجی ببینید.
تغییرات صریح پایانی افزونه را برای برچسب‌های زمانی که در کمتر از hi ثانیه از مبدأ رخ می‌دهند تولید می‌کند، حتی با اینکه این تغییرات می‌توانند به‌طور مختصرتر از طریق رشته گسترش‌یافته POSIX.1-2017 TZ نمایش داده شوند. این گزینه بر برچسب‌های زمانیِ نمایش‌داده‌شده تأثیری نمی‌گذارد. اگرچه این گزینه خواننده‌های غیراستاندارد TZif را که رشته گسترش‌یافته POSIX.1-2017 TZ را نادیده می‌گیرند سازگار می‌سازد، اما اندازه فایل‌های خروجی تغییریافته را افزایش می‌دهد.
هنگام ایجاد اطلاعات زمان محلی، پیوند پیکربندی را به‌جای مکان استاندارد در فایل نام‌برده‌شده قرار می‌دهد.
پرحرف‌تر بودن و نمایش هشدار در مورد شرایط زیر:

ورودی پیوندی به یک پیوند دیگر را مشخص کند، چیزی که توسط برخی تحلیل‌گرهای قدیمی‌تر، از جمله خود zic تا نگارش 2022e پشتیبانی نمی‌شود.

سالی که در فایل داده ظاهر می‌شود خارج از محدوده سال‌های قابل نمایش باشد.

زمانی برابر با 24:00 یا بیشتر در ورودی ظاهر شود. نسخه‌های قبل از ۱۹۹۸ از zic زمان 24:00 را ممنوع کرده بودند، و نسخه‌های قبل از ۲۰۰۷ زمان‌های بزرگ‌تر از 24:00 را ممنوع کردند.

یک قانون از ابتدا یا انتهای ماه فراتر رود. نسخه‌های پیش از ۲۰۰۴ از zic این مورد را ممنوع کرده بودند.

یک اختصار منطقه زمانی از قالب %z استفاده کند. نسخه‌های قبل از ۲۰۱۵ از zic از این مورد پشتیبانی نمی‌کنند.

یک برچسب زمانی شامل کسری از ثانیه باشد. نسخه‌های قبل از ۲۰۱۸ از zic از این مورد پشتیبانی نمی‌کنند.

ورودی شامل اختصاراتی باشد که به دلیل یک اشکال کدنویسی قدیمی توسط نسخه‌های قبل از ۲۰۱۸ از zic به‌نادرستی پردازش می‌شوند. این اختصارات شامل “L” برای “Link”، “mi” برای “min”، “Sa” برای “Sat” و “Su” برای “Sun” هستند.

فایل خروجی شامل تمام اطلاعات مربوط به آینده بلندمدت یک منطقه زمانی نباشد، زیرا آینده را نمی‌توان به‌صورت یک رشته گسترش‌یافته POSIX.1-2017 TZ خلاصه کرد. برای مثال، از سال ۲۰۲۳ این مشکل برای قوانین ساعت تابستانی مراکش رخ می‌دهد، زیرا این قوانین بر اساس پیش‌بینی زمان ماه رمضان تعیین می‌شوند، چیزی که یک رشته گسترش‌یافته POSIX.1-2017 TZ نمی‌تواند نمایش دهد.

خروجی شامل داده‌هایی باشد که ممکن است توسط کدهای سمت مشتری که برای قالب‌های خروجی قدیمی‌تر zic طراحی شده‌اند به‌درستی پردازش نشوند. این مسائل سازگاری فقط بر برچسب‌های زمانی قبل از ۱۹۷۰ یا پس از آغاز سال ۲۰۳۸ تأثیر می‌گذارند.

خروجی حاوی یک جدول ثانیه کبیسه کوتاه‌شده (truncated) باشد که می‌تواند باعث رفتار نادرست برخی خواننده‌های قدیمی‌تر TZif شود. این حالت زمانی رخ می‌دهد که گزینه -L استفاده شده باشد، و یا یک خط Expires وجود داشته باشد یا گزینه -r نیز استفاده شده باشد.

فایل خروجی شامل بیش از ۱۲۰۰ تغییر زمانی باشد که ممکن است توسط برخی کلاینت‌ها به‌درستی پردازش نشود. کلاینت مرجع فعلی حداکثر از ۲۰۰۰ تغییر پشتیبانی می‌کند؛ نسخه‌های قبل از ۲۰۱۴ کلاینت مرجع حداکثر از ۱۲۰۰ تغییر پشتیبانی می‌کنند.

یک اختصار منطقه زمانی کمتر از ۳ یا بیشتر از ۶ نویسه داشته باشد. استاندارد POSIX حداقل ۳ نویسه را الزامی می‌داند و پیاده‌سازی‌ها را ملزم به پشتیبانی از حداقل ۶ نویسه می‌کند.

نام یک فایل خروجی حاوی بایتی باشد که یک حرف اسکی (ASCII)، “-”، “/” یا “_” نیست؛ یا شامل بخشی از نام فایل باشد که بیش از ۱۴ بایت دارد یا با “-” شروع می‌شود.

فایل‌های ورودی از قالبی که در این بخش توصیف شده است استفاده می‌کنند؛ فایل‌های خروجی از قالب tzfile(5) استفاده می‌کنند.

فایل‌های ورودی باید فایل‌های متنی باشند، یعنی باید مجموعه‌ای از صفر یا چند خط باشند که هر خط با یک بایت خط جدید (newline) پایان می‌یابد و با احتساب خط جدید حداکثر حاوی ۲۰۴۸ بایت بوده و فاقد هرگونه بایت NUL است. کدگذاری متن ورودی معمولاً UTF-8 یا ASCII است؛ باید یک نمایش تک‌بایتی برای مجموعه نویسه‌های قابل‌حمل پوزیکس (PPCS) ⟨https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap06.html⟩ داشته باشد و نویسه‌های غیرتک‌بایتیِ کدگذاری باید کاملاً از بایت‌های غیر PPCS تشکیل شده باشند. نویسه‌های غیر PPCS معمولاً فقط در توضیحات (کامنت‌ها) رخ می‌دهند: اگرچه نام فایل‌های خروجی و اختصارات منطقه زمانی تقریباً می‌توانند شامل هر نویسه‌ای باشند، نرم‌افزارهای دیگر بهتر کار خواهند کرد اگر این موارد به نحو محدود توصیف‌شده تحت گزینه -v محدود شوند.

خطوط ورودی از فیلدها تشکیل شده‌اند. فیلدها با یک یا چند نویسه فاصله خالی (whitespace) از یکدیگر جدا می‌شوند. نویسه‌های فاصله خالی عبارتند از: فاصله (space)، تعویض صفحه (form feed)، بازگشت به ابتدای سطر (carriage return)، خط جدید (newline)، تب (tab) و تب عمودی (vertical tab). فاصله‌های خالی ابتدایی و انتهایی در خطوط ورودی نادیده گرفته می‌شوند. یک نویسه شارپ بدون گیومه (#) در ورودی، یک توضیح را معرفی می‌کند که تا انتهای خطی که نویسه در آن ظاهر شده است امتداد می‌یابد. نویسه‌های فاصله خالی و نویسه‌های شارپ در صورتی که قرار است به‌عنوان بخشی از یک فیلد استفاده شوند، می‌توانند در گیومه جفتی (") محصور شوند. هر خطی که خالی باشد (پس از حذف توضیحات) نادیده گرفته می‌شود. انتظار می‌رود خطوط غیرخالی از یکی از سه نوع زیر باشند: خطوط قانون (rule lines)، خطوط منطقه (zone lines)، و خطوط پیوند (link lines).

نام‌ها باید به زبان انگلیسی باشند و به بزرگی و کوچکی حروف حساس نیستند (case insensitive). آن‌ها در چندین زمینه ظاهر می‌شوند و شامل نام ماه‌ها و روزهای هفته و کلیدواژه‌هایی مانند maximum، only، Rolling و Zone هستند. یک نام را می‌توان با حذف همه چیز به‌جز پیشوند اولیه آن کوتاه کرد؛ هرگونه اختصار باید در متن بدون ابهام باشد.

یک خط قانون دارای ساختار زیر است:

Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S

برای نمونه:

Rule	US	1967	1973	-	Apr	lastSun	2:00w	1:00d	D
فیلدهایی که یک خط قانون را تشکیل می‌دهند عبارتند از:
نام مجموعه قوانینی را می‌دهد که شامل این خط است. نام باید با نویسه‌ای شروع شود که نه یک رقم اسکی، نه “-” و نه “+” باشد. برای امکان توسعه‌های آتی، یک نام بدون گیومه نباید شامل نویسه‌هایی از مجموعه زیر باشد: “!$%&'()*,/:;<=>?@[\]^`{|}~”. “!$%&'()*,/:;<=>?@[\]^`{|}~”.
نخستین سالی را که قانون در آن اعمال می‌شود مشخص می‌کند. هر سال با عدد صحیح علامت‌دار می‌تواند ارائه شود؛ تقویم میلادی پیش‌نگر (proleptic Gregorian calendar) فرض می‌شود، که سال 0 قبل از سال 1 قرار دارد. قوانین می‌توانند زمان‌هایی را توصیف کنند که به‌عنوان مقادیر زمانی قابل نمایش نیستند، و زمان‌های غیرقابل نمایش نادیده گرفته می‌شوند؛ این امر به قوانین اجازه می‌دهد تا میان میزبان‌هایی با انواع مختلف مقادیر زمان قابل حمل باشند.
آخرین سالی را که قانون در آن اعمال می‌شود مشخص می‌کند. کلمه maximum (یا یک اختصار) به معنای آینده نامحدود است، و کلمه only (یا یک اختصار) می‌تواند برای تکرار مقدار فیلد FROM به‌کار رود.
-
یک فیلد رزرو شده است و برای سازگاری با نسخه‌های قدیمی‌تر zic همیشه باید شامل “-” باشد. قبلاً با عنوان فیلد TYPE شناخته می‌شد، که می‌توانست مقادیری داشته باشد تا به یک اسکریپت جداگانه امکان دهد اعمال قانون را در “انواع” خاصی از سال‌ها بیشتر محدود کند.
ماهی را مشخص می‌کند که قانون در آن به اجرا درمی‌آید. نام ماه‌ها را می‌توان به‌صورت مخفف نوشت.
روزی را که قانون در آن اجرا می‌شود مشخص می‌کند. فرم‌های شناخته‌شده عبارتند از:
5	روز پنجم ماه
lastSun	آخرین یکشنبه ماه
lastMon	آخرین دوشنبه ماه
Sun>=8	نخستین یکشنبه در روز هشتم یا پس از آن
Sun<=25	آخرین یکشنبه در روز بیست و پنجم یا قبل از آن

نام یک روز هفته (مانند Sunday) یا نام یک روز هفته که قبل از آن “last” آمده است (مانند lastSunday) می‌تواند مخفف شود یا به‌طور کامل نوشته شود. نباید هیچ نویسه فاصله خالی درون فیلد ON وجود داشته باشد. ساختارهای “<=” و “>=” می‌توانند به روزی در ماه مجاور منجر شوند؛ برای مثال، ترکیب IN-ON به‌صورت “Oct Sun>=31” نشان‌دهنده نخستین یکشنبه در ۳۱ اکتبر یا پس از آن است، حتی اگر آن یکشنبه در ماه نوامبر رخ دهد.

ساعتی از روز را که قانون در آن اعمال می‌شود، نسبت به 00:00 (آغاز یک روز تقویمی) مشخص می‌کند. فرم‌های شناخته‌شده عبارتند از:
2	زمان بر حسب ساعت
2:00	زمان بر حسب ساعت و دقیقه
01:28:14	زمان بر حسب ساعت، دقیقه و ثانیه
00:19:32.13	زمان با کسری از ثانیه
12:00	ظهر، ۱۲ ساعت پس از 00:00
15:00	ساعت ۳ بعد از ظهر، ۱۵ ساعت پس از 00:00
24:00	پایان روز، ۲۴ ساعت پس از 00:00
260:00	۲۶۰ ساعت پس از 00:00
-2:30	۲٫۵ ساعت پیش از 00:00
-	معادل با 0

اگرچه zic زمان‌ها را به نزدیک‌ترین ثانیه صحیح گرد می‌کند (و موارد بینابینی را به عدد صحیح زوج گرد می‌کند)، اما کسرها ممکن است برای برنامه‌های دیگری که به دقت بالاتری نیاز دارند مفید باشند. قالب منبع هیچ حداکثر دقتی را مشخص نمی‌کند. هر یک از این فرم‌ها می‌تواند با حرف w دنبال شود اگر زمان داده‌شده زمان محلی یا “ساعت دیواری” (wall clock) باشد، با s دنبال شود اگر زمان داده‌شده زمان استاندارد بدون هیچ‌گونه تعدیل برای ساعت تابستانی باشد، یا با u (یا g یا z) دنبال شود اگر زمان داده‌شده زمان جهانی باشد؛ در صورت عدم وجود نشانگر، زمان محلی (ساعت دیواری) فرض می‌شود. این فرم‌ها ثانیه‌های کبیسه را نادیده می‌گیرند؛ برای مثال، اگر یک ثانیه کبیسه در ساعت 00:59:60 به وقت محلی رخ دهد، “1:00” بیانگر ۳۶۰۱ ثانیه پس از نیمه‌شب محلی است به‌جای ۳۶۰۰ ثانیه معمول. هدف این است که یک خط قانون، لحظاتی را توصیف کند که در آن یک ساعت/تقویم تنظیم‌شده روی نوع زمان مشخص‌شده در فیلد AT تاریخ و ساعت مشخص‌شده از روز را نشان می‌دهد.

مقدار زمانی را که در هنگام اعمال قانون باید به زمان استاندارد محلی اضافه شود، و اینکه آیا زمان حاصل استاندارد است یا ساعت تابستانی، مشخص می‌کند. این فیلد همان قالب فیلد AT را دارد، با این تفاوت که مجموعه متفاوتی از پسوندهای حروفی دارد: s برای زمان استاندارد و d برای ساعت تابستانی (daylight saving time). پسوند حروفی معمولاً حذف می‌شود، و در صورتی که آفست صفر باشد به‌طور پیش‌فرض s و در غیر این صورت d در نظر گرفته می‌شود. آفست‌های منفی مجاز هستند؛ برای نمونه در ایرلند، ساعت تابستانی در زمستان رعایت می‌شود و دارای آفست منفی نسبت به زمان استاندارد ایرلند است. آفست صرفاً به زمان استاندارد اضافه می‌شود؛ برای مثال، zic تفاوتی بین زمان استاندارد 10:30 به علاوه 0:30 SAVE با زمان استاندارد 10:00 به علاوه 1:00 SAVE قائل نمی‌شود.
بخش “متغیر” (برای نمونه، “S” یا “D” در “EST” یا “EDT”) از اختصارات منطقه زمانی را مشخص می‌کند تا هنگامی که این قانون اعمال می‌شود استفاده شود. اگر این فیلد “-” باشد، بخش متغیر تهی (null) است.

یک خط منطقه دارای ساختار زیر است:

Zone	NAME	STDOFF	RULES	FORMAT	[UNTIL]

برای نمونه:

Zone	Asia/Amman	2:00	Jordan	EE%sT	2017 Oct 27 01:00
فیلدهایی که یک خط منطقه را تشکیل می‌دهند عبارتند از:
نام منطقه زمانی. این نامی است که در ایجاد فایل اطلاعات تبدیل زمان برای این منطقه زمانی استفاده می‌شود. نباید شامل مؤلفه نام فایل “.” یا “..” باشد؛ مؤلفه نام فایل، بزرگ‌ترین زیررشته‌ای است که شامل “/” نیست.
مقدار زمانی که برای به دست آوردن زمان استاندارد بدون هیچ‌گونه تعدیل برای ساعت تابستانی، باید به UT اضافه شود. این فیلد همان فرمت فیلدهای AT و SAVE در خطوط قانون را دارد، با این تفاوت که پسوندهای حروفی ندارد؛ اگر زمان باید از UT کم شود، فیلد را با یک علامت منفی شروع کنید.
نام قوانینی که در منطقه زمانی اعمال می‌شوند یا، به‌عنوان روش جایگزین، فیلدی با همان قالب ستون SAVE خط قانون، که مقدار زمانی را که باید به زمان استاندارد محلی اضافه شود و اینکه زمان حاصل استاندارد است یا ساعت تابستانی مشخص می‌کند. اگر این فیلد - باشد، همیشه زمان استاندارد اعمال می‌شود. هنگامی که یک مقدار زمان داده می‌شود، فقط مجموع زمان استاندارد و این مقدار اهمیت دارد.
قالب اختصارات منطقه زمانی. جفت‌نویسه %s برای نشان دادن محل قرارگیری “بخش متغیر” اختصار منطقه زمانی استفاده می‌شود. به‌عنوان روش جایگزین، یک قالب می‌تواند از جفت‌نویسه %z برای نشان دادن آفست UT به شکل ±hh، ±hhmm، یا ±hhmmss استفاده کند، با استفاده از کوتاه‌ترین فرمی که اطلاعات را از دست نمی‌دهد، که در آن hh، mm و ss ساعت‌ها، دقیقه‌ها و ثانیه‌ها در شرق (+) یا غرب (-) زمان UT هستند. به‌عنوان روش جایگزین، یک ممیز (/) اختصارات زمان استاندارد و ساعت تابستانی را از هم جدا می‌کند. برای انطباق با استاندارد POSIX، اختصار منطقه زمانی باید فقط شامل نویسه‌های الفبایی-عددی اسکی، “+” و “-” باشد. بر اساس توافق، اختصار منطقه زمانی “-00” یک جانگهدار (placeholder) است که به معنای نامشخص بودن زمان محلی است.
زمانی که در آن آفست UT یا قانون(ها) برای یک مکان تغییر می‌کند. این فیلد به شکل یک تا چهار فیلد YEAR [MONTH [DAY [TIME]]] است. اگر این مقدار مشخص شود، اطلاعات منطقه زمانی از آفست UT داده‌شده و تغییر قانون تا زمان مشخص‌شده تولید می‌شود، که با استفاده از قوانینِ در حال اجرا دقیقاً قبل از تغییر تفسیر می‌شود. ماه، روز و ساعت روز دارای قالبی مشابه فیلدهای IN، ON و AT یک قانون هستند؛ فیلدهای انتهایی را می‌توان حذف کرد، و به‌طور پیش‌فرض به اولین مقدار ممکن برای فیلدهای گم‌شده تنظیم می‌شوند.
خط بعدی باید یک خط “ادامه” (continuation) باشد؛ این خط فرمی مشابه با یک خط منطقه دارد، با این تفاوت که رشته “Zone” و نام حذف می‌شوند، زیرا خط ادامه اطلاعات را با شروع از زمانی که به‌عنوان اطلاعات “until” در خط قبلی مشخص شده است، در فایلی که توسط خط قبلی استفاده می‌شود قرار می‌دهد. خطوط ادامه ممکن است مانند خطوط منطقه حاوی اطلاعات “until” باشند، که نشان می‌دهد خط بعدی یک ادامه بیشتر است.

اگر یک منطقه در همان لحظه‌ای تغییر کند که در غیر این صورت قانونی در منطقه یا خط ادامه قبلی به اجرا درمی‌آمد، آن قانون نادیده گرفته می‌شود. یک خط منطقه یا خط ادامه L با یک مجموعه قوانین نام‌گذاری‌شده، به‌طور پیش‌فرض با زمان استاندارد آغاز می‌شود: به این معنا که هر یک از برچسب‌های زمانی L که قبل از نخستین قانون L قرار دارند، از قانون در حال اجرا پس از نخستین انتقال L به زمان استاندارد استفاده می‌کنند. در یک منطقه واحد، اگر دو قانون در یک لحظه به اجرا درآیند، یا اگر دو تغییر منطقه در یک لحظه به اجرا درآیند، یک خطا محسوب می‌شود.

اگر یک خط ادامه N ثانیه از آفست UT پس از انتقالی کم کند که در صورت استفاده از آفست UT و قوانین خط ادامه به‌صورت دیرتر تفسیر می‌شد، زمان “until” منطقه یا خط ادامه قبلی بر اساس آفست UT و قوانین خط ادامه تفسیر می‌شود، و هر قانونی که در غیر این صورت در N ثانیه بعدی به اجرا درمی‌آمد در عوض فرض می‌شود که به‌طور هم‌زمان به اجرا درمی‌آید. برای نمونه:

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	US	1967	2006	-	Oct	lastSun	2:00	0	S
Rule	US	1967	1973	-	Apr	lastSun	2:00	1:00	D
# Zone	NAME	STDOFF	RULES	FORMAT	[UNTIL]
Zone	America/Menominee	-5:00	-	EST	1973 Apr 29 2:00
	-6:00	US	C%sT


در این‌جا، یک برداشت نادرست این خواهد بود که در تاریخ 1973-04-29 دو تغییر ساعت وجود داشته است، اولی از 02:00 EST (-05) به 01:00 CST (-06)، و دومی یک ساعت بعد از 02:00 CST (-06) به 03:00 CDT (-05). با این حال، zic این مورد را به‌طور معقول‌تری به‌عنوان یک انتقال واحد از 02:00 CST (-05) به 02:00 CDT (-05) تفسیر می‌کند.

یک خط پیوند ساختاری به شکل زیر دارد:

Link	TARGET	LINK-NAME

برای نمونه:

Link	Europe/Istanbul	Asia/Istanbul
فیلد TARGET باید به‌عنوان فیلد NAME در برخی خطوط منطقه یا به‌عنوان فیلد LINK-NAME در برخی خطوط پیوند ظاهر شود. فیلد LINK-NAME به‌عنوان یک نام جایگزین برای آن منطقه استفاده می‌شود؛ و دارای همان نحو فیلد NAME در خط منطقه است. پیوندها می‌توانند به یکدیگر زنجیر شوند، اگرچه رفتار در صورتی که زنجیره‌ای از یک یا چند پیوند به نام Zone ختم نشود، نامشخص است. یک خط پیوند می‌تواند قبل از خطی که هدف پیوند را تعریف می‌کند ظاهر شود. برای نمونه:
Link	Greenwich	G_M_T
Link	Etc/GMT	Greenwich
Zone	Etc/GMT  0  -  GMT


دو پیوند به یکدیگر زنجیر شده‌اند، و G_M_T، Greenwich و Etc/GMT همگی به یک منطقه اشاره می‌کنند.

به‌جز خطوط ادامه، خطوط ممکن است به هر ترتیبی در ورودی ظاهر شوند. با این حال، اگر چندین خط منطقه یا پیوند یک نام یکسان را تعریف کنند، رفتار نامشخص است.

فایلی که ثانیه‌های کبیسه را توصیف می‌کند می‌تواند شامل خطوط کبیسه (leap lines) و یک خط انقضا (expiration line) باشد. خطوط کبیسه دارای ساختار زیر هستند:

Leap	YEAR	MONTH	DAY	HH:MM:SS	CORR	R/S

برای نمونه:

Leap	2016	Dec	31	23:59:60	+	S
فیلدهای YEAR، MONTH، DAY و HH:MM:SS زمان وقوع ثانیه کبیسه را مشخص می‌کنند. فیلد CORR در صورتی که یک ثانیه اضافه شده باشد باید “+” یا در صورتی که یک ثانیه نادیده گرفته شده (کم شده) باشد باید “-” باشد. فیلد R/S باید (مخففی از) “Stationary” باشد اگر زمان ثانیه کبیسه داده‌شده توسط سایر فیلدها باید به‌عنوان UTC تفسیر شود یا (مخففی از) “Rolling” باشد اگر زمان ثانیه کبیسه داده‌شده توسط سایر فیلدها باید به‌عنوان زمان محلی (ساعت دیواری) تفسیر شود.

ثانیه‌های کبیسه متحرک (Rolling leap seconds) زمانی پیاده‌سازی شدند که مشخص نبود رویه رایج متحرک (rolling) است یا ساکن (stationary)، با این نگرانی که ممکن است افراد شاهد مراسم پایین آمدن توپ در میدان تایمز باشند که در آن شمارش معکوس “3... 2... 1... کبیسه... سال نو مبارک” وجود داشته باشد، و ثانیه کبیسه را به‌جای نیمه‌شب UTC در نیمه‌شب به وقت نیویورک قرار دهد. با این حال، این سبک از شمارش معکوس رواج نیافته است، که بدان معناست ثانیه‌های کبیسه متحرک در عمل استفاده نمی‌شوند؛ همچنین، در صورت استفاده از گزینه -r پشتیبانی نمی‌شوند.

خط انقضا، در صورت وجود، دارای ساختار زیر است:

Expires	YEAR	MONTH	DAY	HH:MM:SS

برای نمونه:

Expires	2020	Dec	28	00:00:00
فیلدهای YEAR، MONTH، DAY و HH:MM:SS برچسب زمانی انقضا به وقت UTC را برای جدول ثانیه کبیسه مشخص می‌کنند.

در این‌جا یک نمونه گسترده از ورودی zic آورده شده است که هدف آن نشان دادن بسیاری از ویژگی‌های آن است.

# Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S
Rule	Swiss	1941	1942	-	May	Mon>=1	1:00	1:00	S
Rule	Swiss	1941	1942	-	Oct	Mon>=1	2:00	0	-

Rule	EU	1977	1980	-	Apr	Sun>=1	1:00u	1:00	S
Rule	EU	1977	only	-	Sep	lastSun	1:00u	0	-
Rule	EU	1978	only	-	Oct	 1	1:00u	0	-
Rule	EU	1979	1995	-	Sep	lastSun	1:00u	0	-
Rule	EU	1981	max	-	Mar	lastSun	1:00u	1:00	S
Rule	EU	1996	max	-	Oct	lastSun	1:00u	0	-

# Zone	NAME	STDOFF	RULES	FORMAT	[UNTIL]
Zone	Europe/Zurich	0:34:08	-	LMT	1853 Jul 16
		0:29:45.50	-	BMT	1894 Jun
		1:00	Swiss	CE%sT	1981
		1:00	EU	CE%sT

Link	Europe/Zurich	Europe/Vaduz


در این مثال، قوانین EU برای اتحادیه اروپا و سازمان سلف آن، یعنی جوامع اروپایی (European Communities) است. منطقه زمانی با نام Europe/Zurich نام‌گذاری شده و دارای نام مستعار Europe/Vaduz است. این مثال بیان می‌کند که زوریخ تا تاریخ 1853-07-16 ساعت 00:00 به میزان ۳۴ دقیقه و ۸ ثانیه در شرق UT قرار داشته است، یعنی زمانی که آفست قانونی به 7 degrees 26 minutes 22.50 seconds تغییر یافت، که معادل 0:29:45.50 است؛ zic با این مقدار با گرد کردن آن به 0:29:46 رفتار می‌کند. پس از تاریخ 1894-06-01 ساعت 00:00، آفست UT به یک ساعت تبدیل شد و قوانین ساعت تابستانی سوئیس (تعریف‌شده با خطوطی که با “Rule Swiss” شروع می‌شوند) اعمال شدند. از سال ۱۹۸۱ تا کنون، قوانین ساعت تابستانی اتحادیه اروپا اعمال شده‌اند، و آفست UTC روی یک ساعت باقی مانده است.

در سال‌های ۱۹۴۱ و ۱۹۴۲، ساعت تابستانی از اولین دوشنبه ماه مه در ساعت 01:00 تا اولین دوشنبه ماه اکتبر در ساعت 02:00 اعمال می‌شد. قوانین ساعت تابستانی اتحادیه اروپا پیش از سال ۱۹۸۱ در این‌جا تأثیری ندارند، اما برای کامل بودن آورده شده‌اند. از سال ۱۹۸۱، ساعت تابستانی در آخرین یکشنبه ماه مارس در ساعت 01:00 UTC آغاز شده است. تا سال ۱۹۹۵ در آخرین یکشنبه ماه سپتامبر در ساعت 01:00 UTC پایان می‌یافت، اما از سال ۱۹۹۶ این زمان به آخرین یکشنبه ماه اکتبر تغییر یافت.

برای مقاصد نمایش، در ابتدا به‌ترتیب از “LMT” و “BMT” استفاده شد. از زمان اعمال قوانین سوئیس و پس از آن قوانین اتحادیه اروپا، اختصار منطقه زمانی برای زمان استاندارد CET و برای ساعت تابستانی CEST بوده است.

/etc/localtime
فایل پیش‌فرض منطقه زمانی محلی.
/usr/share/zoneinfo
دایرکتوری پیش‌فرض اطلاعات منطقه زمانی.

برای مناطقی با بیش از دو نوع زمان محلی، ممکن است لازم باشد از زمان استاندارد محلی در فیلد AT قانونِ نخستین زمان تغییر استفاده کنید تا مطمئن شوید که نخستین زمان تغییر ثبت‌شده در فایل کامپایل‌شده صحیح است.

اگر برای یک منطقه زمانی خاص، پیش کشیدن ساعت ناشی از شروع ساعت تابستانی، هم‌زمان با و برابر با عقب کشیدن ساعت ناشی از تغییر در آفست UT باشد، zic یک تغییر واحد به ساعت تابستانی در آفست UT جدید بدون هیچ تغییری در زمان محلی (ساعت دیواری) ایجاد می‌کند. برای دریافت تغییرات جداگانه، از چندین خط ادامه منطقه که لحظات تغییر را با استفاده از زمان جهانی مشخص می‌کنند استفاده کنید.

tzfile(5), zdump(8)

Time Zone Database