Unix timestamp کو تاریخ میں تبدیل کرنے والا

Unix timestamp کو قابلِ فہم تاریخ اور وقت میں تبدیل کریں — یا کسی بھی تاریخ کو واپس Unix timestamp میں بدلیں۔ سیکنڈ اور ملی سیکنڈ دونوں سپورٹ کرتا ہے۔

یہ ٹول شیئر کریں

اپنی سائٹ میں شامل کریں

Unix timestamp کیا ہے؟

Unix timestamp، جسے Unix time یا POSIX time بھی کہا جاتا ہے، 1970-01-01 00:00:00 UTC سے گزرے ہوئے سیکنڈوں کی تعداد ہے، جسے Unix epoch کہا جاتا ہے۔ یہ کمپیوٹنگ میں بہت عام معیار ہے کیونکہ یہ وقت کے ایک نقطے کو ایک واحد عدد کے طور پر ظاہر کرتا ہے، جو ڈیٹا محفوظ کرنا، موازنہ کرنا اور حسابات کرنا آسان بناتا ہے۔

JavaScript اندرونی طور پر ملی سیکنڈ میں کام کرتا ہے، اس لیے Date.now() Unix timestamp کو 1000 سے ضرب دے کر واپس کرتا ہے۔ بہت سے APIs، ڈیٹا بیسز اور بیک اینڈ سسٹمز اس کی جگہ سیکنڈ استعمال کرتے ہیں۔ یہ ٹول دونوں فارمیٹس قبول کرتا ہے اور آپ کے درج کردہ نمبر کی سائز کی بنیاد پر خود بخود سیکنڈ یا ملی سیکنڈ معلوم کرتا ہے۔

قابلِ غور Unix timestamps

Timestampتاریخ (UTC)نوٹ
01970-01-01 00:00:00Unix epoch
1,000,000,0002001-09-09 01:46:401 ارب سیکنڈ
2,000,000,0002033-05-18 03:33:202 ارب سیکنڈ
2,147,483,6472038-01-19 03:14:072038 کا مسئلہ (32-bit کی سب سے زیادہ حد)

1970 کیوں؟

Unix epoch 1 جنوری 1970 کا انتخاب جزوی طور پر روایت اور جزوی طور پر عملی پابندیوں کی بنیاد پر کیا گیا۔ Unix کو 1960 کی دہائی کے آخر اور 1970 کی دہائی کے شروع میں Bell Labs میں تیار کیا گیا تھا۔ ڈویلپرز کو اپنی وقت کی نمائندگی کے لیے ایک حالیہ، گول شروعات کی تاریخ کی ضرورت تھی۔ 1 جنوری 1970 عملی لحاظ سے حالیہ کافی تھا اور اس کی کوئی خاص تکنیکی اہمیت نہیں تھی — یہ صرف ایک آسان حوالہ نقطہ تھا۔

دوسرے سسٹمز میں متبادل epoch تاریخیں موجود ہیں: Windows FILETIME epoch 1 جنوری 1601 ہے؛ GPS وقت 6 جنوری 1980 سے شروع ہوا؛ NTP epoch 1 جنوری 1900 ہے۔ سسٹمز کے درمیان تبدیلی کے وقت، ہر سسٹم کا epoch جاننا ضروری ہے۔

سیکنڈ بمقابلہ ملی سیکنڈ

اصل Unix timestamp سیکنڈ میں ہے۔ زیادہ تر سرور سائڈ زبانیں اور سسٹمز (Unix shell، Python کا time.time()، PHP کا time()، زیادہ تر ڈیٹا بیسز) سیکنڈ استعمال کرتے ہیں۔ JavaScript کا Date.now() اور new Date().getTime() ملی سیکنڈ واپس کرتے ہیں۔ یہ عدم مطابقت اس وقت عام غلطی کا سبب بنتی ہے جب JavaScript frontends بیک اینڈ APIs کے ساتھ بات چیت کرتے ہیں۔

سیکنڈ میں Unix timestamp فی الوقت 10 ہندسے والا نمبر ہے (2023 تک تقریباً 1,700,000,000)۔ ملی سیکنڈ timestamp 13 ہندسے والا نمبر ہے۔ کیلکولیٹر یہ معلوم کرتا ہے کہ آپ نے ہندسوں کی تعداد کی بنیاد پر کون سا فارمیٹ درج کیا ہے اور اس کے مطابق تبدیلی کرتا ہے۔

2038 کا مسئلہ

جو سسٹمز Unix timestamps کو signed 32-bit عدد کے طور پر محفوظ کرتے ہیں، وہ صرف 2,147,483,647 سیکنڈ تک کی تاریخوں کو ظاہر کر سکتے ہیں — جو 19 جنوری 2038 کو 03:14:07 UTC ہے۔ اس لمحے کے بعد، 32-bit signed عدد ایک بڑے منفی نمبر میں بہہ جاتا ہے، جو 1901 کی ایک تاریخ کی نمائندگی کرتا ہے۔

اسے بعض اوقات "Y2K38" مسئلہ یا Unix Millennium Bug کہا جاتا ہے۔ جدید 64-bit سسٹمز متاثر نہیں ہوتے، کیونکہ signed 64-bit عدد تقریباً 292 ارب سالوں کے timestamps کی نمائندگی کر سکتے ہیں۔ تاہم، embedded سسٹمز، پرانے ڈیٹا بیسز اور پرانے 32-bit سافٹ ویئر ابھی بھی خطرے میں ہو سکتے ہیں۔ بہت سی انڈسٹریز — جن میں ٹیلی کمیونیکیشنز، بینکنگ اور صنعتی کنٹرول سسٹمز شامل ہیں — اس کو حل کرنے کے لیے منتقلی کی کوششیں جاری رکھے ہوئے ہیں۔

موجودہ Unix timestamp کیسے حاصل کریں

زبان / ماحولکمانڈ
JavaScriptMath.floor(Date.now() / 1000)
Pythonimport time; int(time.time())
PHPtime()
Bashdate +%s
SQL (PostgreSQL)EXTRACT(EPOCH FROM NOW())::int
SQL (MySQL)UNIX_TIMESTAMP()
Gotime.Now().Unix()
RustSystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs()

عملی استعمالات

API ڈویلپمنٹ: REST APIs عام طور پر created_at، updated_at اور token expiry فیلڈز کے لیے Unix timestamps استعمال کرتے ہیں۔ Timestamp ٹائم زون سے آزاد اور واضح ہے — فارمیٹ شدہ تاریخ کے سٹرنگ کے برعکس، جو locale اور فارمیٹنگ کنونشنز پر منحصر ہوتے ہیں۔

Token expiry: JWT (JSON Web Tokens) exp (expiry) اور iat (issued at) کلیمز کے لیے Unix timestamps استعمال کرتے ہیں۔ جب موجودہ timestamp exp ویلیو سے تجاوز کرے تو token ختم ہو جاتا ہے۔ Expiry وقت کا حساب لگانا — "یہ token 24 گھنٹے میں ختم ہونا چاہیے" — موجودہ timestamp میں 86,400 سیکنڈ شامل کرنا ضروری ہے۔

Cache TTL: Cache expiry اکثر Unix timestamp کے طور پر یا ابھی سے سیکنڈوں کی تعداد کے طور پر سیٹ کیا جاتا ہے۔ Cache کے مسائل کی debugging میں اکثر stored expiry timestamp کو انسان کی پڑھنے کے قابل تاریخ میں تبدیل کرنا پڑتا ہے۔

Log analysis: سرور لاگز میں اکثر Unix timestamps شامل ہوتے ہیں۔ انہیں قابلِ فہم تاریخوں میں تبدیل کرنا log entries کو حقیقی دنیا کے واقعات سے جوڑنے کا پہلا قدم ہے۔

ڈیٹا بیس سٹوریج: Timestamps کو فارمیٹ شدہ سٹرنگ کی بجائے integers کے طور پر محفوظ کرنا ٹائم زون کنورژن کی غلطیوں سے بچاتا ہے اور سورٹنگ، رینج کویریز اور حسابات کو سادہ بناتا ہے۔ "آخری 7 دنوں کے تمام ریکارڈز" کے لیے ایک کویری WHERE created_at > (NOW_UNIX - 604800) بن جاتی ہے۔

اکثر پوچھے جانے والے سوالات

یونکس ٹائم اسٹیمپ کیا ہوتا ہے؟

یونکس ٹائم اسٹیمپ وہ سیکنڈز کی تعداد ہے جو 1 جنوری 1970، 00:00:00 UTC سے اب تک گزر چکی ہو — اس حوالہ نقطے کو یونکس ایپک (Unix epoch) کہا جاتا ہے۔ یہ وقت کے کسی بھی لمحے کو ایک ہی عدد (integer) کی شکل میں ظاہر کرتا ہے، جس سے اسے محفوظ کرنا، موازنہ کرنا اور اس پر حساب لگانا آسان ہو جاتا ہے۔ یہ زیادہ تر آپریٹنگ سسٹمز، ڈیٹا بیسز، APIs اور پروگرامنگ زبانوں میں استعمال ہونے والا معیاری ٹائم فارمیٹ ہے۔

میں یونکس ٹائم اسٹیمپ کو تاریخ میں کیسے تبدیل کروں؟

کنورٹر میں ٹائم اسٹیمپ درج کریں، اور یہ اس کے مطابق تاریخ اور وقت UTC میں اور آپ کے مقامی ٹائم زون میں دکھا دے گا۔ یہ ٹول خود بخود پہچان لیتا ہے کہ آپ نے سیکنڈز (10 ہندسوں) میں نمبر ڈالا ہے یا ملی سیکنڈز (13 ہندسوں) میں۔ آپ الٹی سمت میں بھی تبدیل کر سکتے ہیں: تاریخ اور وقت منتخب کریں اور اس کا یونکس ٹائم اسٹیمپ حاصل کریں۔

یونکس ٹائم میں سیکنڈز اور ملی سیکنڈز کا کیا فرق ہے؟

اصل یونکس ٹائم اسٹیمپ سیکنڈز میں ہوتا ہے۔ زیادہ تر سرور سائیڈ سسٹمز — PHP، Python، Go، Bash، SQL ڈیٹا بیسز — سیکنڈز ہی استعمال کرتے ہیں۔ جبکہ JavaScript میں Date.now() اور new Date().getTime() ملی سیکنڈز واپس کرتے ہیں (یونکس سیکنڈز × 1000)۔ فی الحال سیکنڈز والا ٹائم اسٹیمپ عموماً 10 ہندسوں کا ہوتا ہے، اور ملی سیکنڈز والا 13 ہندسوں کا۔ دونوں کو گڈمڈ کرنا ایک عام بگ ہے، مثلاً جب JavaScript فرنٹ اینڈ ایسا ٹائم اسٹیمپ بیک اینڈ کو بھیج دے جو سیکنڈز کی توقع کر رہا ہو۔

یونکس ٹائم کا آغاز 1 جنوری 1970 سے کیوں ہوتا ہے؟

یہ تاریخ 1970 کی دہائی کے آغاز میں Bell Labs میں یونکس کے ڈویلپرز نے ایک آسان اور نسبتاً حالیہ نقطۂ آغاز کے طور پر منتخب کی تھی۔ اس کی کوئی خاص معنوی اہمیت نہیں — بس یہ وہ گول تاریخ ہے جو سسٹم کی تیاری کے زمانے کے قریب پڑتی تھی۔ دوسرے نظام مختلف ایپک استعمال کرتے ہیں: Windows FILETIME کا آغاز 1 جنوری 1601 سے ہوتا ہے؛ GPS وقت 6 جنوری 1980 سے؛ اور NTP کا آغاز 1 جنوری 1900 سے۔

سال 2038 کا مسئلہ (Year 2038 problem) کیا ہے؟

وہ نظام جو یونکس ٹائم اسٹیمپ کو signed 32-bit integer کے طور پر محفوظ کرتے ہیں، صرف 19 جنوری 2038 تک کی تاریخیں ظاہر کر سکتے ہیں (ٹائم اسٹیمپ 2,147,483,647)۔ اس کے بعد ویلیو overflow ہو کر ایک بڑا منفی نمبر بن جاتی ہے، جو 1901 کی کسی تاریخ کو ظاہر کرتا ہے۔ جدید 64-bit سسٹمز اس مسئلے سے متاثر نہیں ہوتے۔ تاہم پرانے embedded سسٹمز، پرانے ڈیٹا بیسز اور 32-bit سافٹ ویئر اب بھی متاثر ہو سکتے ہیں اور اس تاریخ سے پہلے مائیگریشن کی ضرورت پڑ سکتی ہے۔

میں اپنی پروگرامنگ زبان میں موجودہ یونکس ٹائم اسٹیمپ کیسے حاصل کروں؟

JavaScript: Math.floor(Date.now() / 1000). Python: import time; int(time.time()). PHP: time(). Bash: date +%s. PostgreSQL: EXTRACT(EPOCH FROM NOW())::int. MySQL: UNIX_TIMESTAMP(). Go: time.Now().Unix(). یہ سب یونکس ایپک سے اب تک گزرنے والے سیکنڈز کی صورت میں موجودہ وقت واپس کرتے ہیں۔

متعلقہ مضامین