JWT کا exp / iat claim پڑھنا
JSON Web Tokens iat (issued at) اور exp (expires at) کو Unix سیکنڈز کے طور پر encode کرتے ہیں۔ عدد پیسٹ کریں اور فوراً دیکھیں کہ آیا token ابھی valid ہے، یہ کب issue ہوا اور expire ہونے میں کتنا وقت ہے۔
کسی بھی Unix ٹائم اسٹیمپ (سیکنڈز یا ملی سیکنڈز) کو قابلِ مطالعہ تاریخ میں — یا کسی بھی تاریخ کو واپس epoch میں — فوراً تبدیل کریں۔ ISO 8601، RFC 2822، UTC، مقامی وقت اور 10+ ٹائم زونز ایک ہی ویو میں۔
Unix ٹائم اسٹیمپ (جسے "Unix وقت" یا "epoch وقت" بھی کہا جاتا ہے) ان سیکنڈز کی تعداد ہے جو جمعرات، 1 جنوری 1970 کو 00:00:00 UTC سے گزر چکے ہیں، leap سیکنڈز کو نظر انداز کرتے ہوئے۔ یہ ڈیٹابیسز، لاگ فائلز، APIs اور کوکیز میں استعمال ہونے والا عالمی وقت کا فارمیٹ ہے۔ 10 ہندسوں کا عدد سیکنڈز ہے (2286 میں 11 ہندسوں پر منتقل ہو جائے گا)؛ 13 ہندسوں کا عدد ملی سیکنڈز ہے۔
زیادہ تر Unix ٹولنگ (curl، date، syslog، JWT کے exp/iat claims) سیکنڈز استعمال کرتی ہے۔ JavaScript کا Date.now ملی سیکنڈز واپس کرتا ہے۔ Java، Kotlin اور بہت سے ویب APIs ملی سیکنڈز استعمال کرتے ہیں۔ اگر آپ کا عدد آج تقریباً 10 ہندسوں کا ہے تو وہ سیکنڈز ہے۔ اگر 13 ہندسے ہیں تو ملی سیکنڈز ہے۔ iKit ہندسوں کی تعداد سے خودکار شناخت کرتا ہے، مگر آپ ریڈیو بٹنز سے یونٹ کو زبردستی منتخب کر سکتے ہیں۔
—
سیکنڈز
—
ملی سیکنڈز
براؤزر پکر کو آپ کے مقامی ٹائم زون کے طور پر سمجھتا ہے — کسی مختلف زون سے تبدیل کرنے کے لیے اپنا OS ٹائم زون تبدیل کریں۔
کوئی بھی چیز جو Date.parse سمجھ سکے: "2024-01-15 10:30 UTC"، "Jan 15, 2024"، "2024-01-15T10:30:00+09:00"۔
لاگز، APIs اور ڈیٹابیس ٹائم اسٹیمپس کو ڈیبگ کرنے والے ڈویلپرز کے لیے بنایا گیا — کوئی سائن اپ نہیں، کوئی اپ لوڈ نہیں، آپ اور آپ کے ڈیٹا کے درمیان کوئی تیسرا فریق نہیں۔
موجودہ Unix وقت ہر سیکنڈ پیج کے اوپر سیکنڈز اور ملی سیکنڈز میں اپ ڈیٹ ہوتا ہے۔ کسی بھی فارمیٹ کے لیے ایک کلک پر کاپی۔
کوئی بھی عدد پیسٹ کریں — 10 ہندسے سیکنڈز سمجھے جاتے ہیں، 13 ہندسے ملی سیکنڈز، 16 مائیکرو سیکنڈز۔ ضرورت پڑنے پر یونٹ ٹوگل سے دستی طور پر اوور رائیڈ کریں۔
ISO 8601، RFC 2822، UTC گھڑی، آپ کا مقامی وقت اور Y-M-D H:M:S ایک ہی ویو میں۔ ساتھ ہی ہفتے کا دن اور انسانی پڑھنے کے قابل نسبتی فرق ("2 گھنٹے پہلے")۔
وہی لمحہ UTC، نیویارک، LA، لندن، پیرس، ٹوکیو، شنگھائی، تائی پے، کولکاتا اور سڈنی میں دیکھیں — کراس ٹیم واقعات اور عالمی APIs کے لیے مفید۔
تاریخ → ٹائم اسٹیمپ موڈ پر سوئچ کریں اور "Jan 15 2024 10:30 UTC" ٹائپ کریں یا date-time ان پٹ سے منتخب کریں، Unix ٹائم اسٹیمپ سیکنڈز اور ملی سیکنڈز میں حاصل کریں۔
سب کچھ JavaScript کے طور پر چلتا ہے جو پہلے ہی آپ کے براؤزر ٹیب میں لوڈ ہے۔ DevTools → Network میں تصدیق کر سکتے ہیں: کوئی fetch نہیں، کوئی XHR نہیں، کوئی لاگنگ نہیں۔ پروڈکشن ٹائم اسٹیمپس کے لیے محفوظ۔
Unix ٹائم اسٹیمپ صرف ایک عددی قدر ہے — مگر اسے تاریخ میں تبدیل کرنے میں حیرت انگیز حد تک تفصیل شامل ہوتی ہے۔
Unix ٹائم اسٹیمپ ماخذ کے لحاظ سے سیکنڈز، ملی سیکنڈز، مائیکرو سیکنڈز یا نینو سیکنڈز میں ہو سکتا ہے۔ سب سے پہلا کام یہ جاننا ہے کہ آپ کے پاس کون سا ہے۔ iKit ہندسوں کی تعداد دیکھتا ہے: ~10 ہندسے = سیکنڈز، ~13 = ملی سیکنڈز، ~16 = مائیکرو سیکنڈز۔ آپ یونٹ ریڈیو بٹنز سے خودکار شناخت کو اوور رائیڈ کر سکتے ہیں۔
JavaScript کا Date constructor ملی سیکنڈز لیتا ہے، اس لیے ہم سیکنڈز × 1000 ضرب دیتے ہیں (یا مائیکرو سیکنڈز / 1000 تقسیم کرتے ہیں) تاکہ نارملائز ہو جائے۔ اندرونی طور پر Date 64-bit float میں epoch سے ملی سیکنڈز محفوظ کرتا ہے — کسی بھی حقیقی ٹائم اسٹیمپ کے لیے کافی رینج۔
ایک بار جب ہمارے پاس Date آبجیکٹ ہو، ہم اس سے کئی طریقوں سے فارمیٹ کرنے کو کہتے ہیں: ISO 8601 / UTC کے لیے toISOString، RFC 2822 کے لیے toUTCString، صارف کے مقامی زون کے لیے toString، اور کسی دوسرے ٹائم زون کے لیے Intl.DateTimeFormat۔
دوسری طرف، براؤزر کا Date.parse ISO 8601 اور بہت سے قدرتی فارمیٹس کو سنبھالتا ہے۔ datetime-local ان پٹ کو صارف کے مقامی ٹائم زون میں سمجھا جاتا ہے۔ getTime epoch سے ملی سیکنڈز واپس کرتا ہے؛ سیکنڈز کے لیے 1000 سے تقسیم کریں۔
حقیقی صورتحال جہاں آپ کو epoch کنورٹر کی ضرورت پڑے گی۔
JSON Web Tokens iat (issued at) اور exp (expires at) کو Unix سیکنڈز کے طور پر encode کرتے ہیں۔ عدد پیسٹ کریں اور فوراً دیکھیں کہ آیا token ابھی valid ہے، یہ کب issue ہوا اور expire ہونے میں کتنا وقت ہے۔
Postgres کا extract(epoch from now)، MySQL کا UNIX_TIMESTAMP، MongoDB کا $toDate — یہ سب Unix epoch واپس کرتے ہیں۔ کسی row کی ٹائم اسٹیمپ ویلیو پیسٹ کریں اور ٹائم زونز میں اصل گھڑی کا وقت دیکھیں۔
ایپلیکیشن لاگز UTC میں، syslog مقامی وقت میں، اپ اسٹریم فراہم کنندہ کے لاگز PST میں۔ ہر ٹائم اسٹیمپ کو یہاں ISO 8601 میں تبدیل کریں، پھر آپ واقعہ کا پیچھا کرتے ہوئے انہیں سیکنڈ بہ سیکنڈ ملا سکتے ہیں۔
پکر میں مستقبل کی تاریخ منتخب کریں، Unix ٹائم اسٹیمپ کاپی کریں، اسے Set-Cookie ہیڈر، HTTP Expires فیلڈ یا اپنی کیش TTL کنفگ میں پیسٹ کریں۔ کوئی ذہنی حساب نہیں، کوئی off-by-one زون غلطی نہیں۔
پروڈکشن لاگز، کسٹمر سپورٹ ٹکٹوں، آڈٹ ٹریلز یا ٹیسٹ fixtures سے ٹائم اسٹیمپس اکثر بے ضرر لگتے ہیں مگر صارف کے اعمال اور انفراسٹرکچر کے واقعات سے جڑے ہوتے ہیں۔ انہیں کسی اور کے سرور پر پیسٹ کرنا ایسا paper trail بناتا ہے جس پر آپ کا کنٹرول نہیں۔ iKit کا کنورٹر JavaScript کے طور پر چلتا ہے جو پہلے ہی آپ کے براؤزر ٹیب میں لوڈ ہے۔
iKit بلاگ سے تفصیلی ٹیوٹوریلز اور ٹولز کا موازنہ۔
Unix ٹائم اسٹیمپ (جسے "Unix وقت" یا "epoch وقت" بھی کہا جاتا ہے) ان سیکنڈز کی تعداد ہے جو جمعرات، 1 جنوری 1970 کو 00:00:00 UTC سے گزر چکے ہیں، leap سیکنڈز کو نظر انداز کرتے ہوئے۔ یہ ڈیٹابیسز، لاگ فائلز، APIs اور کوکیز میں استعمال ہونے والا عالمی وقت کا فارمیٹ ہے۔ 10 ہندسوں کا عدد سیکنڈز ہے (2286 میں 11 ہندسوں پر منتقل ہو جائے گا)؛ 13 ہندسوں کا عدد ملی سیکنڈز ہے۔
زیادہ تر Unix ٹولنگ (curl، date، syslog، JWT کے exp/iat claims) سیکنڈز استعمال کرتی ہے۔ JavaScript کا Date.now ملی سیکنڈز واپس کرتا ہے۔ Java، Kotlin اور بہت سے ویب APIs ملی سیکنڈز استعمال کرتے ہیں۔ اگر آپ کا عدد آج تقریباً 10 ہندسوں کا ہے تو وہ سیکنڈز ہے۔ اگر 13 ہندسے ہیں تو ملی سیکنڈز ہے۔ iKit ہندسوں کی تعداد سے خودکار شناخت کرتا ہے، مگر آپ ریڈیو بٹنز سے یونٹ کو زبردستی منتخب کر سکتے ہیں۔
نہیں۔ پورا ٹول JavaScript ہے جو آپ کے براؤزر ٹیب کے اندر چلتا ہے۔ تبدیلی سادہ Date حسابات ہے — کوئی fetch نہیں، کوئی XHR نہیں، کوئی beacon نہیں۔ DevTools → Network کھولیں اور دیکھیں: ٹائپ کرتے وقت کوئی request نہیں جاتی۔ پروڈکشن لاگز، اسٹیجنگ ڈیٹابیسز یا کسٹمر سپورٹ ٹکٹوں سے ٹائم اسٹیمپس پیسٹ کرنا محفوظ ہے۔
Unix ٹائم اسٹیمپ بذات خود ٹائم زون سے آزاد ہے — یہ epoch UTC سے گزرنے والے سیکنڈز کی تعداد ہے۔ فرق صرف اس وقت ظاہر ہوتا ہے جب آپ اسے دکھاتے ہیں۔ تاریخ → ٹائم اسٹیمپ سائیڈ پر پکر آپ کے براؤزر کا مقامی ٹائم زون استعمال کرتا ہے۔ کسی دوسرے زون میں تاریخ درج کرنے کے لیے، اسے واضح offset کے ساتھ آزاد فارم میں ٹائپ کریں، مثلاً "2024-01-15 10:30:00 +09:00" یا "2024-01-15 10:30 UTC"۔
32-bit signed Unix ٹائم اسٹیمپس 19 جنوری 2038 کو overflow ہو جاتے ہیں۔ iKit JavaScript کا Number ٹائپ استعمال کرتا ہے (53-bit safe-integer رینج)، اس لیے ہم سال 275000 عیسوی سے بھی آگے کی تاریخوں کو سنبھال سکتے ہیں۔ Y2038 مسئلہ ان سسٹمز کو متاثر کرتا ہے جو 32-bit time_t چلاتے ہیں — زیادہ تر جدید OS کرنلز، ڈیٹابیسز اور زبانیں پہلے ہی 64-bit وقت پر منتقل ہو چکی ہیں، لیکن پرانا embedded firmware اب بھی اس کا شکار ہو سکتا ہے۔