یونکس ٹائم اسٹیمپس بغیر کسی سردرد کے
تین ڈویلپرز سے پوچھیں کہ وقت کیا ہے اور آپ کو تین مختلف جواب مل سکتے ہیں، اس بات پر منحصر کہ وہ کہاں بیٹھے ہیں۔ ایک یونکس ٹائم اسٹیمپ سے پوچھیں اور آپ کو عین ایک نمبر ملتا ہے، جو کرہ ارض پر ہر کسی کے لیے یکساں ہے۔ وہی واحد عدد ہے جو خاموشی سے تقریباً ہر لاگ فائل، ڈیٹا بیس قطار، اور API جواب کی بنیاد بنتا ہے جسے آپ کبھی چھوئیں گے۔ یہ صفحہ بیان کرتا ہے کہ اس نمبر کا مطلب کیا ہے، اسے دونوں سمتوں میں کیسے پڑھا جائے، اور یہ کہاں لوگوں کو الجھاتا ہے۔

یونکس ٹائم دراصل کیا ہے
ایک یونکس ٹائم اسٹیمپ 1 جنوری 1970 کو 00:00:00 UTC سے اب تک گزرے سیکنڈز کی تعداد ہے، لیپ سیکنڈز کو شمار کیے بغیر۔ اُس لمحے کو ایپوک کہا جاتا ہے، اور ابتدائی یونکس انجینئروں نے اسے محض اس لیے چنا کیونکہ یہ شمار کرنے کے لیے ایک آسان گول تاریخ تھی۔ ایپوک پر یہ قدر عین 0 ہے۔ اس کے بعد سے ہر سیکنڈ ایک کا اضافہ کرتا ہے، اس لیے نمبر صرف بڑھتا ہے۔ 1970 سے پہلے کی تاریخیں بھی بالکل درست ہیں، جنہیں منفی عدد کے طور پر ظاہر کیا جاتا ہے۔
آپ اس تصور کو POSIX ٹائم یا، ڈھیلے طور پر، ایپوک ٹائم بھی کہتے ہوئے دیکھیں گے۔ چاہے لیبل کچھ بھی ہو، میکانکس یکساں رہتے ہیں: سیکنڈز کا ایک ہمیشہ بڑھتا ہوا کاؤنٹر۔ چونکہ یہ فارمیٹ شدہ اسٹرنگ کی بجائے ایک سادہ عدد ہے، ایک کمپیوٹر اسے چند بائٹس میں محفوظ کر سکتا ہے اور دو اقدار کا موازنہ محض ایک تفریق سے کر سکتا ہے۔
سیکنڈز، ملی سیکنڈز، اور اُن جیسے دوسرے
کلاسک یونکس ٹائم مکمل سیکنڈز شمار کرتا ہے، جو آج آپ دیکھنے والا مانوس دس ہندسوں والا نمبر دیتا ہے۔ مگر بہت سے ماحول کو زیادہ باریک ریزولوشن کی ضرورت ہوتی ہے۔ JavaScript، مثال کے طور پر، ملی سیکنڈز میں کام کرتی ہے، جو تیرہ ہندسوں والی قدر بناتی ہے، اور کچھ نظام مائیکرو سیکنڈز یا نینو سیکنڈز میں مزید آگے جاتے ہیں۔ ایک قابلِ اعتماد اصول: دس ہندسوں والا نمبر سیکنڈز ہے، تیرہ ہندسے ملی سیکنڈز ہیں۔ اگر آپ کی تبدیل شدہ تاریخ 1970 کے آس پاس اترتی ہے جب آپ نے موجودہ دن کی توقع کی تھی، تو آپ نے یقیناً ملی سیکنڈز کو سیکنڈز کی فیلڈ میں ڈال دیا ہے، یا اس کے برعکس۔ ہمارا کنورٹر خودکار طور پر مقدار کا پتہ لگاتا ہے تاکہ آپ کو شاذ و نادر ہی اندازہ لگانا پڑے۔
ڈویلپرز اس پر کیوں انحصار کرتے ہیں
سب سے بڑا فائدہ یہ ہے کہ ٹائم اسٹیمپ ٹائم زون سے آزاد ہے۔ عدد 1735689600 ٹوکیو، برلن، اور ساؤ پاؤلو میں عین اسی لمحے کی طرف اشارہ کرتا ہے۔ ایک فارمیٹ شدہ مقامی اسٹرنگ کی بجائے اس نمبر کو محفوظ کرنے کا مطلب ہے کہ آپ کو کبھی یہ سوچنے کی ضرورت نہیں کہ کوئی قدر کس گھڑی سے تعلق رکھتی تھی۔ ترتیب دینا بھی معمولی ہے، کیونکہ تاریخی ترتیب صرف عددی ترتیب ہے، اس لیے ٹائم اسٹیمپ کالم پر ایک ڈیٹا بیس انڈیکس بغیر کسی پارسنگ کے واقعات کو درست طور پر ترتیب دیتا ہے۔ حساب کتاب بھی اتنا ہی صاف ہے: دو واقعات کے درمیان فاصلہ ایک تفریق ہے، اور ایک دن شامل کرنا 86400 شامل کرنا ہے۔ یہی خصوصیات ہیں جن کی وجہ سے لاگز، ٹوکنز، کیشز، اور میسیج قطاریں سب ایپوک ٹائم کی طرف رخ کرتی ہیں۔
دونوں سمتوں میں تبدیل کرنا
ایک ٹائم اسٹیمپ سے انسانی تاریخ کی طرف جانے کا مطلب ہے سیکنڈز کے شمار کو ایک کیلنڈر پر منتقل کرنا، پھر اسے جس بھی ٹائم زون کی آپ کو فکر ہو اُس میں فارمیٹ کرنا۔ دوسری طرف جاتے ہوئے، آپ ایک سال، مہینہ، دن، اور وقت لیتے ہیں، فیصلہ کرتے ہیں کہ یہ کس ٹائم زون میں ظاہر کیا گیا ہے، اور اسے واپس ایپوک سے سیکنڈز میں سمیٹ دیتے ہیں۔ ہمارا ٹول دونوں سمتیں فوری طور پر اور مکمل طور پر آپ کے براؤزر میں کرتا ہے، اس لیے آپ جو کچھ بھی پیسٹ کریں وہ آپ کی مشین سے باہر نہیں جاتا۔ ڈی کوڈ کرنے کے لیے کوئی نمبر پیسٹ کریں، یا انکوڈ کرنے کے لیے کوئی تاریخ چنیں، اور نتیجہ عین اُسی لمحے UTC اور اپنے مقامی وقت دونوں میں پڑھیں۔

UTC بمقابلہ مقامی وقت، کلاسک پھندا
ٹائم اسٹیمپ خود کسی ٹائم زون کا حامل نہیں ہوتا؛ یہ ہمیشہ UTC سے جڑا ہوتا ہے۔ الجھن صرف اُس وقت ظاہر ہوتی ہے جب آپ اسے دکھاتے ہیں۔ اگر آپ 1700000000 کو تبدیل کریں اور آپ کی اسکرین شام کا وقت دکھائے جبکہ کسی دوسرے ملک میں موجود ساتھی دوپہر کا وقت دیکھے، تو کچھ بھی خراب نہیں ہے، آپ دونوں عین اسی لمحے کو مختلف مقامی گھڑیوں میں رینڈر شدہ دیکھ رہے ہیں۔ خرابیاں تب پیدا ہوتی ہیں جب کوڈ کسی مقامی تاریخ کو ایسے پڑھے جیسے وہ UTC ہو، یا آفسیٹ ریکارڈ کیے بغیر کوئی وال کلاک ٹائم اسٹیمپ کر دے۔ محفوظ عادت یہ ہے کہ UTC کو محفوظ اور منتقل کیا جائے، اور صرف آخری لمحے پر مقامی آفسیٹ لاگو کیا جائے، جب آپ قدر کو کسی شخص کو دکھا رہے ہوں۔ شک کی صورت میں، اپنی مقامی لائن کی بجائے کنورٹر کی UTC لائن سے موازنہ کریں۔
سال 2038 کا مسئلہ
کئی پرانے نظام یونکس ٹائم کو ایک سائنڈ 32 بٹ عدد میں محفوظ کرتے تھے۔ وہ فیلڈ 19 جنوری 2038 کو 03:14:07 UTC کے ایک سیکنڈ بعد جگہ ختم کر دیتی ہے، جب کاؤنٹر اوور فلو ہو کر ایک منفی عدد پر لپٹ جاتا ہے، جو ممکنہ طور پر تاریخوں کو 1901 تک واپس پھینک دیتا ہے۔ یہ Y2K جیسے مسئلے کی ہی نسل ہے۔ اچھی خبر یہ ہے کہ جدید آپریٹنگ سسٹمز اور زبانیں بڑے پیمانے پر 64 بٹ ٹائم اسٹیمپس پر منتقل ہو چکی ہیں، جو تقریباً 292 ارب سالوں تک اوور فلو نہیں ہوں گی، اس لیے نئے کوڈ کے لیے یہ زیادہ تر ایک ہنگامی صورتحال کی بجائے جاننے کے قابل تاریخی تجسس ہے۔
مزید براؤزر پر مبنی معاون ٹولز کے لیے ہمارے ڈویلپر ٹولز دیکھیں، اور اگر آپ کو خود نمبروں پر کام کرنا ہو، تو کیلکولیٹرز ایک کلک کی دوری پر ہیں۔
اکثر پوچھے جانے والے سوالات
یونکس ٹائم اسٹیمپ کیا ہے؟
یہ 1 جنوری 1970 کو 00:00:00 UTC سے اب تک گزرے سیکنڈز کی تعداد ہے، لیپ سیکنڈز کو شمار کیے بغیر۔ اُس آغازی لمحے کو ایپوک کہا جاتا ہے، اور شمار وقت کے ساتھ صرف بڑھتا ہے۔
میرا نمبر 1970 کے قریب کسی تاریخ میں کیوں تبدیل ہوتا ہے؟
آپ نے شاید سیکنڈز اور ملی سیکنڈز کو گڈمڈ کر دیا۔ دس ہندسوں والا نمبر سیکنڈز ہے اور تیرہ ہندسوں والا نمبر ملی سیکنڈز ہے۔ ملی سیکنڈز کو سیکنڈز کی فیلڈ میں ڈالنا ظاہری وقت کو تقریباً ہزار سے تقسیم کر دیتا ہے، جس سے آپ ایپوک کے قریب پہنچ جاتے ہیں۔
کیا یونکس ٹائم اسٹیمپ کا کوئی ٹائم زون ہوتا ہے؟
نہیں۔ قدر ہمیشہ UTC سے جڑی رہتی ہے۔ ٹائم زون صرف اُس وقت سامنے آتا ہے جب آپ ٹائم اسٹیمپ کو انسانی طور پر پڑھنے کے قابل تاریخ کے طور پر دکھاتے ہیں، اور یہی وجہ ہے کہ ایک ہی نمبر مختلف لوگوں کے لیے مختلف وال کلاک وقت دکھا سکتا ہے۔
میں کسی تاریخ کو واپس ٹائم اسٹیمپ میں کیسے تبدیل کروں؟
سال، مہینہ، دن، اور وقت دیں، فیصلہ کریں کہ وہ تاریخ کس ٹائم زون میں ظاہر کی گئی ہے، اور ٹول اسے ایپوک سے سیکنڈز میں سمیٹ دیتا ہے۔ آپ دونوں سمتیں اس صفحے پر فوری طور پر اپنے براؤزر میں کر سکتے ہیں۔
سال 2038 کا مسئلہ کیا ہے؟
وہ نظام جو یونکس ٹائم کو ایک سائنڈ 32 بٹ عدد میں محفوظ کرتے ہیں 19 جنوری 2038 کو 03:14:07 UTC کے ایک سیکنڈ بعد اوور فلو ہو جاتے ہیں۔ جدید 64 بٹ ٹائم اسٹیمپس اربوں سالوں کے لیے اس سے بچتے ہیں، اس لیے زیادہ تر موجودہ سافٹ ویئر متاثر نہیں ہوتا۔
کیا میرا ڈیٹا کسی سرور کو بھیجا جاتا ہے؟
نہیں۔ تبدیلی مکمل طور پر آپ کے براؤزر میں ہوتی ہے، اس لیے آپ جو بھی ٹائم اسٹیمپ یا تاریخ پیسٹ کریں وہ آپ کے اپنے آلے پر ہی رہتی ہے۔
