ٹائم اسٹیمپ فارمیٹ
فہرست:
خلاصہ
مسئلہ
ہم ٹائم اسٹیمپس اور ایسے یکساں ٹائم اسٹیمپ فارمیٹ کے ذریعے، جو ہمارے تمام سسٹمز اور تیسرے فریق کے سسٹمز میں اچھی طرح کام کرے، یہ سراغ رکھنے کے قابل ہونا چاہتے ہیں کہ چیزیں کب ہوتی ہیں۔
ہم ایسے سسٹمز کے ساتھ تعامل کرتے ہیں جن کے ٹائم اسٹیمپ فارمیٹ مختلف ہیں:
JSON پیغامات کا کوئی مقامی ٹائم اسٹیمپ فارمیٹ نہیں ہوتا، اس لیے ہمیں چننا ہوتا ہے کہ ٹائم اسٹیمپ کو اسٹرنگ میں اور اسٹرنگ کو ٹائم اسٹیمپ میں کیسے تبدیل کریں، یعنی سیریلائز/ڈی سیریلائز کیسے کریں۔
کچھ ایپلیکیشنز UTC وقت کی بجائے مقامی وقت استعمال کرنے کے لیے سیٹ ہیں۔ یہ ان منصوبوں کے لیے آسان ہو سکتا ہے جنہیں مقامی وقت کے مطابق ڈھلنا ہوتا ہے، جیسے مقامی وقت پر مبنی واقعات متحرک کرنے والے منصوبے۔
کچھ سسٹمز کی وقت کی درستگی کی ضروریات اور صلاحیتیں مختلف ہیں، جیسے سیکنڈ بمقابلہ ملی سیکنڈ بمقابلہ نینو سیکنڈ کی وقتی ریزولوشن کا استعمال۔ مثلاً Linux آپریٹنگ سسٹم کا
dateکمانڈ سیکنڈ کی ڈیفالٹ وقتی درستگی استعمال کرتا ہے، جبکہ Nasdaq اسٹاک ایکسچینج نینو سیکنڈ کی ڈیفالٹ وقتی درستگی چاہتا ہے۔
فیصلہ
ہم نینو سیکنڈ کی درستگی کے ساتھ ٹائم اسٹیمپ کا معیاری فارمیٹ ISO 8601 چنتے ہیں، خاص طور پر "YYYY-MM-DDTHH:MM:SS.NNNNNNNNNZ"۔
فارمیٹ سال، مہینہ، دن، گھنٹہ، منٹ، سیکنڈ، نینو سیکنڈ اور Zulu ٹائم زون عرف UTC، GMT دکھاتا ہے۔
حالت
فیصلہ ہو گیا۔
تفصیلات
مفروضات
ہمیں ان ٹائم اسٹیمپ متنی اسٹرنگز کو سنبھالنا ہے، ٹائم اسٹیمپ سے اسٹرنگ میں (عرف سیریلائز) اور اسٹرنگ سے ٹائم اسٹیمپ میں (عرف ڈی سیریلائز) تبدیل کرنے کے لیے۔
ہم ایسا فارمیٹ چاہتے ہیں جو عمومی طور پر استعمال میں آسان، تبدیل کرنے میں آسان اور انسان کے پڑھنے میں آسان ہو۔
ہم بیرونی سسٹمز کی وسیع رینج سے مطابقت چاہتے ہیں جنہیں ہم کنٹرول نہیں کر سکتے، جیسے اینالیٹکس سسٹمز، ڈیٹا بیس سسٹمز، مالیاتی سسٹمز۔
پابندیاں
کچھ سسٹمز کی وقتی درستگی کی حدود ہیں۔ مثلاً macOS آپریٹنگ سسٹم کا date کمانڈ وقتی درستگی سیکنڈ میں پرنٹ کر سکتا ہے، لیکن نینو سیکنڈ میں نہیں۔
مؤقف
ہم نے اختیارات کی ایک رینج پر غور کیا:
یونکس ایپوک (Unix epoch)، یعنی ایک بڑھتا ہوا نمبر۔
مختصر متنی فارمیٹ "YYYYMMDDTHHMMSSNNNNNNNNN"۔
مقامی ٹائم زون بمقابلہ UTC ٹائم زون کا استعمال۔
دلیل
عام استعمال کے لیے ہم خام رفتار/سائز کے مقابلے میں انسان کے پڑھنے/لکھنے میں آسانی کی زیادہ قدر کرتے ہیں۔
عام استعمال کے لیے ہم ایسا فارمیٹ چاہتے ہیں جو مشینی سسٹمز میں ٹھیک کام کرے، اور دستی طور پر بھی اچھا کام کرے، جیسے نمونہ ڈیٹا لکھنا، JSON آؤٹ پٹ پڑھنا، لاگ فائل میں grep کرنا وغیرہ۔
غیر عام استعمال کے لیے، جیسے ہائی پرفارمنس کمپیوٹنگ، ہم توقع کرتے ہیں کہ ہم اپنے منتخب کردہ کسی بھی متنی فارمیٹ کو متن کو تیز تر فارمیٹ میں تبدیل کر کے بہتر بنانا چاہیں گے، جیسے کسی پروگرامنگ زبان کی اندرونی تاریخ کی آبجیکٹ قسم۔ لہٰذا HPC کے لیے متنی فارمیٹ زیادہ اہمیت نہیں رکھتا۔
مضمرات
ہمارے مختلف متنی سسٹمز اور وقتی سسٹمز اس فارمیٹ کی طرف آ جائیں گے۔
متعلقہ
متعلقہ فیصلے
ہم وقت کے فرق عرف دورانیوں کا سراغ رکھنے کا بھی تیز/آسان طریقہ چاہ سکتے ہیں۔ یونکس ایپوک ٹائم اسٹیمپس کے ساتھ یہ آسان ہے۔
متعلقہ تقاضے
ہم اپنے فیصلے میں رد و بدل کرنا چاہ سکتے ہیں، مثلاً اگر لاگنگ پیغام کے مخصوص قسم کے اسٹیمپ کا کوئی متعلقہ تقاضا ہو، جیسے Splunk، Sumo، ELK وغیرہ کے لیے۔
متعلقہ آرٹیفیکٹس
زبانوں کے فارمیٹرز اور پارسرز:
Rosetta Code کی مثالیں:
SixArm کی مثالیں:
متعلقہ اصول
آسانی سے واپس لیا جا سکتا ہے۔ ہم کافی آسانی سے مختلف فارمیٹ، جیسے یونکس ایپوک، پر جا سکتے ہیں۔
قبل از وقت اصلاح مؤخر کریں۔ عام استعمال کے لیے ہمیں چند اضافی حروف کی زیادہ پروا نہیں، مثلاً ڈیش اور کولن استعمال کرنے والا فارمیٹ۔
نوٹس
یہاں نوٹس شامل کریں۔