یونکس ٹائم اسٹیمپ کو انسانی پڑھنے کے قابل تاریخوں میں تبدیل کریں۔
ڈویلپرز، ڈیٹا بیس ایڈمنسٹریٹرز، اور لاگ فائلوں یا APIs کے ساتھ کام کرنے والے ہر شخص کو باقاعدگی سے یونکس ٹائم اسٹیمپ کا سامنا کرنا پڑتا ہے - لمبے نمبر جیسے 1700000000 جو وقت کے ایک لمحے کی نمائندگی کرتے ہیں۔ کنورٹر کے بغیر، یہ نمبر زیادہ تر لوگوں کے لیے بے معنی ہیں۔ یہ ٹول کسی بھی یونکس ٹائم اسٹیمپ کو فوری طور پر پڑھنے کے قابل تاریخ اور وقت میں تبدیل کرتا ہے، اور کسی بھی تاریخ کو اس کے یونکس ٹائم اسٹیمپ میں بھی بدل دیتا ہے۔
یونکس ٹائم اسٹیمپ کیا ہے؟
یونکس ٹائم اسٹیمپ یکم جنوری 1970 کو آرڈینیٹڈ یونیورسل ٹائم (UTC) کی آدھی رات سے گزرنے والے سیکنڈوں کی تعداد شمار کرتا ہے۔ یہ لمحہ، جسے یونکس کا عہد کہا جاتا ہے، کو حوالہ نقطہ کے طور پر منتخب کیا گیا تھا جب یونکس آپریٹنگ سسٹم تیار کیا جا رہا تھا۔ گزرنے والا ہر سیکنڈ گنتی میں ایک کا اضافہ کرتا ہے۔ ٹائم اسٹیمپ 0 1 جنوری 1970 UTC کی بالکل آدھی رات کی نمائندگی کرتا ہے۔ ٹائم اسٹیمپ 1700000000 14 نومبر 2023 کو 22:13:20 UTC کی نمائندگی کرتا ہے۔
یونکس ٹائم اسٹیمپ کی خوبصورتی یہ ہے کہ وہ ٹائم زون-ایگنوسٹک ہیں۔ ٹائم اسٹیمپ بالکل اسی لمحے کی نمائندگی کرتا ہے اس سے قطع نظر کہ آپ دنیا میں کہاں ہیں۔ مقامی وقت میں تبدیل ہونے پر، ایک ہی ٹائم اسٹیمپ ٹوکیو اور نیویارک میں مختلف کلاک ریڈنگز تیار کرتا ہے، لیکن وہ ایک ہی فزیکل انسٹنٹ کا حوالہ دیتے ہیں۔
کنورٹر کا استعمال کیسے کریں۔
ٹائم اسٹیمپ کو تاریخ میں تبدیل کرنے کے لیے، ٹائم اسٹیمپ نمبر کو اوپری فیلڈ میں چسپاں کریں۔ UTC تاریخ اور وقت اور آپ کا مقامی مساوی دونوں فوراً ظاہر ہوتے ہیں۔ کسی تاریخ کو ٹائم اسٹیمپ میں تبدیل کرنے کے لیے، نچلے حصے میں تاریخ چننے والا استعمال کریں اور متعلقہ ٹائم اسٹیمپ فوری طور پر ظاہر ہو جاتا ہے۔
ملی سیکنڈز بمقابلہ سیکنڈز
کچھ سسٹمز، خاص طور پر ویب براؤزرز اور جاوا اسکرپٹ ایپلی کیشنز، اپنے ٹائم اسٹیمپ کے لیے سیکنڈ کے بجائے ملی سیکنڈ کا استعمال کرتے ہیں۔ JavaScript Date.now() کال 1700000000000 کی طرح کچھ لوٹاتی ہے - سیکنڈوں میں مساوی یونکس ٹائم اسٹیمپ سے تقریباً 1000 گنا بڑا نمبر۔ اگر آپ کے پاس جو نمبر ہے وہ تقریباً تیرہ ہندسوں کا ہے، تو یہ شاید ملی سیکنڈ میں ہے: 1000 سے تقسیم کریں اور نتیجہ درج کریں۔
سال 2038 کا مسئلہ
ابتدائی یونکس سسٹم ٹائم اسٹیمپ کو 32-بٹ دستخط شدہ عدد کے طور پر محفوظ کرتے تھے، جو 2,147,483,647 تک کی قدریں رکھ سکتے ہیں۔ وہ زیادہ سے زیادہ قدر 19 جنوری 2038 کو 03:14:07 UTC سے مساوی ہے۔ سسٹم جو ٹائم اسٹیمپ کو 32 بٹ انٹیجرز میں اسٹور کرتے ہیں وہ اس تاریخ کو اوور فلو ہو جائیں گے، یہ مسئلہ کبھی کبھی Y2K38 کہلاتا ہے۔ جدید 64 بٹ سسٹم ٹائم اسٹیمپ کو 292 بلین سال سے زیادہ ذخیرہ کر سکتے ہیں، جس سے یہ مسئلہ صرف میراثی سافٹ ویئر کے لیے ہے جسے اپ ڈیٹ نہیں کیا گیا ہے۔
عام استعمال
ٹائم اسٹیمپس لاگ فائلوں، ڈیٹا بیس ریکارڈز، API کے جوابات، کیش ہیڈرز، کرپٹوگرافک سرٹیفکیٹس، اور لاتعداد دیگر سیاق و سباق میں ظاہر ہوتے ہیں۔ انہیں پڑھنے کے قابل تاریخوں میں تبدیل کرنے سے ڈیبگنگ، ڈیٹا کے تجزیہ، تعمیل آڈیٹنگ، اور ایسی کسی بھی صورتحال میں مدد ملتی ہے جہاں آپ کو کچھ ہونے کے وقت سمجھنے کی ضرورت ہو۔
1970 کو نقطہ آغاز کے طور پر کیوں چنا گیا؟
یکم جنوری 1970 کا انتخاب اپنے آپ میں ایک بامعنی تاریخ کے بجائے بنیادی طور پر ایک عملی تھا۔ یونکس کو 1960 کی دہائی کے آخر اور 1970 کی دہائی کے اوائل میں بیل لیبز میں تیار کیا جا رہا تھا، اور ڈیزائنرز کو اعداد کو قابل انتظام رکھنے کے لیے ایک حوالہ نقطہ کی ضرورت تھی لیکن آپریٹنگ سسٹم کی ممکنہ زندگی کو پورا کرنے کے لیے کافی جلد۔ 1970 کے آغاز تک گول کرنا آسان تھا۔ کئی دہائیوں بعد، وہ من مانی انتخاب گہرائی میں سرایت کر گیا ہے: یہ اس بات کی نشاندہی کرتا ہے کہ تقریباً ہر پروگرامنگ زبان، ڈیٹا بیس اور آپریٹنگ سسٹم اندرونی طور پر وقت کی نمائندگی کیسے کرتا ہے، حالانکہ زیادہ تر پروگرامرز کو اس کے بارے میں براہ راست سوچنے کی ضرورت نہیں ہوتی ہے۔
بغیر کنورٹر کے ٹائم اسٹیمپ پڑھنا
تھوڑی سی مشق کے ساتھ آپ اپنے دماغ میں ٹائم اسٹیمپ کی جانچ کر سکتے ہیں۔ 31,536,000 (ایک عام سال میں سیکنڈوں کی تعداد) سے تقسیم کرنے سے 1970 سے لے کر اب تک کے سالوں کی ایک موٹی تعداد ملتی ہے — 1.7 سے شروع ہونے والا دس ہندسوں کا ٹائم اسٹیمپ تقریباً سال 2023 کے مساوی ہے، مثال کے طور پر، 1970 سے لے کر اب تک تقریباً 53-54 سال وہاں موجود ہیں۔ یہ موٹا ذہنی تخمینہ واضح طور پر غلط ٹائم اسٹیمپ کو تلاش کرنے کا ایک مفید طریقہ ہے، جیسے کہ 1000 کے فیکٹر سے بند ہے کیونکہ یہ دراصل ملی سیکنڈ میں تھا، اس سے پہلے کہ آپ کیلکولیٹر تک پہنچ جائیں۔
منفی ٹائم اسٹیمپ
چونکہ یونکس ٹائم اسٹیمپ محض دور سے سیکنڈوں کی دستخط شدہ گنتی ہے، 1 جنوری 1970 سے پہلے کی تاریخوں کو غیر تعاون یافتہ ہونے کے بجائے منفی نمبروں کے طور پر پیش کیا جاتا ہے۔ مثال کے طور پر -86400 کا ٹائم اسٹیمپ عہد سے ٹھیک ایک دن پہلے کی نمائندگی کرتا ہے: 31 دسمبر 1969۔ یہ کنورٹر منفی اقدار کو مثبت اقدار کی طرح ہینڈل کرتا ہے، جو تاریخی ریکارڈز یا ڈیٹا کے ساتھ کام کرنے کے لیے مفید ہے جو کمپیوٹنگ دور سے پہلے ہے لیکن پھر بھی یونکس ٹائم اسٹیمپ کی شکل میں محفوظ ہے۔
ٹائم اسٹیمپ ٹائم زون-ایگنوسٹک کیوں ہوتے ہیں۔
فارمیٹ شدہ ڈیٹ سٹرنگ کے بجائے کسی لمحے کو یونکس ٹائم اسٹیمپ کے طور پر ذخیرہ کرنے کا واحد سب سے بڑا فائدہ یہ ہے کہ یہ اسٹوریج اور حساب کتاب کے دوران ٹائم زون کو مکمل طور پر پیچھے چھوڑ دیتا ہے۔ ٹائم اسٹیمپ بالکل ایک فزیکل انسٹنٹ کی نمائندگی کرتا ہے، اور صرف اس وقت مقامی کیلنڈر کی تاریخ اور گھڑی کے وقت میں ترجمہ کیا جاتا ہے جب یہ کسی شخص کو دکھایا جاتا ہے۔ یہی وجہ ہے کہ ڈیٹا بیس، APIs اور لاگ فائلیں پہلے سے فارمیٹ شدہ مقامی تاریخوں کے بجائے ٹائم اسٹیمپ کو بہت زیادہ ذخیرہ کرتی ہیں: مختلف ٹائم زونز میں دو سرور پورے اعتماد کے ساتھ ٹائم اسٹیمپ کے درمیان فرق کا موازنہ، ترتیب اور حساب لگا سکتے ہیں، اور انہیں صرف آخری مرحلے پر انسانی پڑھنے کے قابل مقامی وقت میں تبدیل کرنے کی ضرورت ہوتی ہے، بالکل اسی طرح جیسے یہ کنورٹر کرتا ہے جب یہ آپ کے مقامی ETC دونوں طرف دکھاتا ہے۔
ٹائم اسٹیمپ کے ساتھ ڈیبگ کرنا
ڈیبگنگ کے دوران ڈیولپر مسلسل اس طرح کے کنورٹر تک پہنچ جاتے ہیں۔ 1700000000 کے ساتھ مہر لگا ہوا سرور کی خرابی کا لاگ ایک نظر میں بے معنی ہے، لیکن اسے فوری طور پر تبدیل کرنا آپ کو بتاتا ہے کہ آیا خرابی کاروباری اوقات کے دوران ہوئی، راتوں رات، یا عین وقت پر تعیناتی ختم ہوئی — اکثر بگ رپورٹ کو اس تبدیلی کے ساتھ جوڑنے کا واحد تیز ترین طریقہ جس کی وجہ سے یہ ہوا ہے۔ API کے جوابات، ڈیٹابیس آڈٹ کالم اور کیش ایکسپائری ہیڈرز سبھی عام طور پر ٹائم اسٹیمپ کو اسٹور کرتے ہیں نہ کہ فارمیٹ شدہ تاریخوں کے بجائے اسی وجہ سے اسٹوریج انجن ان کو ترجیح دیتے ہیں: ایک سادہ نمبر ترتیب دیتا ہے، موازنہ کرتا ہے اور درست طریقے سے حساب کرتا ہے بغیر کسی لوکیل یا فارمیٹ کے ابہام کے، اور صرف انسان دوست تاریخ میں ترجمہ کرنے کی ضرورت ہوتی ہے، جو کہ اس آخری ڈسپلے کے مرحلے پر کام کرتا ہے۔
نجی
جاوا اسکرپٹ کے بلٹ ان ڈیٹ آبجیکٹ کا استعمال کرتے ہوئے آپ کے براؤزر میں ہر چیز چلتی ہے، لہذا تبدیلی دونوں سمتوں میں فوری ہوتی ہے اور آپ کے درج کردہ ٹائم اسٹیمپ یا تاریخ کو کبھی بھی سرور کو نہیں بھیجا جاتا، لاگ ان یا شیئر کیا جاتا ہے۔
یونکس ٹائم اسٹیمپ کے اکثر پوچھے گئے سوالات
- یونکس ٹائم اسٹیمپ کیا ہے؟
- یونکس ٹائم اسٹیمپ ایک ایسا نمبر ہے جو یکم جنوری 1970 سے 00:00:00 UTC پر گزرے ہوئے سیکنڈز کی تعداد کو ظاہر کرتا ہے۔ یہ عالمی سطح پر کمپیوٹنگ میں ٹائم زون کے ابہام کے بغیر پوائنٹس کی نمائندگی کے لیے استعمال ہوتا ہے۔
- سال 2038 کا مسئلہ کیا ہے؟
- پرانے سسٹم جو یونکس ٹائم اسٹیمپ کو 32-بٹ دستخط شدہ عدد کے طور پر محفوظ کرتے ہیں وہ صرف 19 جنوری 2038 تک کی تاریخوں کی نمائندگی کر سکتے ہیں۔ جدید 64-بٹ سسٹم میں یہ حد نہیں ہے۔
- میں ملی سیکنڈز کو کیسے تبدیل کروں؟
- کچھ سسٹم سیکنڈ کے بجائے ملی سیکنڈ استعمال کرتے ہیں۔ ملی سیکنڈ ٹائم اسٹیمپ کو 1000 سے تقسیم کریں تاکہ اسے یہاں درج کرنے سے پہلے سیکنڈ میں تبدیل کر دیا جائے۔