یونکس ٹائم اسٹیمپ سے تاریخ کنورٹر: 12/24 گھنٹوں کی شکل کی حمایت
یونکس ٹائم اسٹیمپ کو انسانی پڑھنے کے قابل تاریخوں اور اوقات میں تبدیل کریں۔ اس سادہ، صارف دوست کنورٹر ٹول کے ساتھ 12 گھنٹے اور 24 گھنٹے کی شکلوں میں سے انتخاب کریں۔
یونکس ٹائم اسٹیمپ کنورٹر
تبدیل شدہ تاریخ اور وقت
دستاویزات
یونکس ٹائم اسٹیمپ کنورٹر
تعارف
یونکس ٹائم اسٹیمپ (جسے POSIX وقت یا ایپوک وقت بھی کہا جاتا ہے) وقت کے ایک نقطے کو بیان کرنے کے لیے ایک نظام ہے۔ یہ 1 جنوری 1970 (آدھی رات UTC/GMT) کے بعد گزرے ہوئے سیکنڈز کی تعداد ہے، جس میں لیپ سیکنڈز کو شمار نہیں کیا جاتا۔ یونکس ٹائم اسٹیمپ کمپیوٹر سسٹمز اور پروگرامنگ زبانوں میں وسیع پیمانے پر استعمال ہوتے ہیں کیونکہ یہ ایک مخصوص لمحے کی وقت کی ایک کمپیکٹ، زبان سے آزاد نمائندگی فراہم کرتے ہیں۔
یہ ٹائم اسٹیمپ سے تاریخ کنورٹر مختلف لمبائی کے ٹائم اسٹیمپس کو خود بخود شناخت اور پروسیس کرتا ہے، بشمول مائیکرو سیکنڈ کی درستگی (16 ہندسے)، ملی سیکنڈ کی درستگی (13 ہندسے)، اور معیاری یونکس ٹائم اسٹیمپس (10 ہندسے)۔ یہ ٹول ان پٹ کی لمبائی کی بنیاد پر ٹائم اسٹیمپ کی شکل کی شناخت کرتا ہے، اسے انسانی پڑھنے کے قابل تاریخ اور وقت کی شکل میں تبدیل کرتا ہے، اور صارفین کو ٹائم اسٹیمپ کی قسم کی وضاحت کرنے کی ضرورت کے بغیر نتیجہ دکھاتا ہے۔ یہ مختلف علاقائی اور ذاتی ترجیحات کے مطابق 12 گھنٹے (AM/PM) اور 24 گھنٹے کے وقت کی شکلوں دونوں کی حمایت کرتا ہے۔
یونکس ٹائم اسٹیمپس کیسے کام کرتے ہیں
یونکس ٹائم اسٹیمپس کو یونکس ایپوک (1 جنوری 1970، 00:00:00 UTC) کے بعد گزرے ہوئے سیکنڈز کی تعداد کے طور پر حساب کیا جاتا ہے۔ یہ انہیں وقت کے فرق کا حساب لگانے اور تاریخوں کو ایک کمپیکٹ شکل میں ذخیرہ کرنے کے لیے خاص طور پر مفید بناتا ہے۔
یونکس ٹائم اسٹیمپ سے کیلنڈر کی تاریخ میں تبدیلی کا ریاضیاتی طریقہ کار کئی مراحل میں شامل ہے:
- یونکس ایپوک (1 جنوری 1970، 00:00:00 UTC) سے شروع کریں
- ٹائم اسٹیمپ میں سیکنڈز کی تعداد شامل کریں
- لیپ سال، مختلف مہینوں کی لمبائی، اور دیگر کیلنڈر کی پیچیدگیوں کا حساب لگائیں
- اگر ضرورت ہو تو ٹائم زون کی ایڈجسٹمنٹ لگائیں
مثال کے طور پر، یونکس ٹائم اسٹیمپ 1609459200
جمعہ، 1 جنوری 2021، 00:00:00 UTC کی نمائندگی کرتا ہے۔
تبدیلی کا فارمولہ درج ذیل طور پر بیان کیا جا سکتا ہے:
زیادہ تر پروگرامنگ زبانیں اور آپریٹنگ سسٹمز اس تبدیلی کو سنبھالنے کے لیے بلٹ ان فنکشنز فراہم کرتے ہیں، جو پیچیدہ کیلنڈر کی حسابات کو چھپاتے ہیں۔
ٹائم اسٹیمپ کی شکلیں اور خودکار شناخت
ہمارا کنورٹر تین عام ٹائم اسٹیمپ کی شکلوں کی حمایت کرتا ہے، جو ہندسے کی تعداد کی بنیاد پر خود بخود شناخت کی جاتی ہیں:
-
معیاری یونکس ٹائم اسٹیمپ (10 ہندسے): یونکس ایپوک کے بعد سیکنڈز کی نمائندگی کرتا ہے۔ مثال:
1609459200
(1 جنوری 2021، 00:00:00 UTC) -
ملی سیکنڈ کی درستگی (13 ہندسے): یونکس ایپوک کے بعد ملی سیکنڈز کی نمائندگی کرتا ہے۔ مثال:
1609459200000
(1 جنوری 2021، 00:00:00 UTC) -
مائیکرو سیکنڈ کی درستگی (16 ہندسے): یونکس ایپوک کے بعد مائیکرو سیکنڈز کی نمائندگی کرتا ہے۔ مثال:
1609459200000000
(1 جنوری 2021، 00:00:00 UTC)
خودکار شناخت ان پٹ کی لمبائی کا تجزیہ کرکے کام کرتی ہے:
- اگر ان پٹ میں 10 ہندسے ہوں تو اسے معیاری یونکس ٹائم اسٹیمپ (سیکنڈ) کے طور پر سمجھا جاتا ہے
- اگر ان پٹ میں 13 ہندسے ہوں تو اسے ملی سیکنڈ ٹائم اسٹیمپ کے طور پر سمجھا جاتا ہے
- اگر ان پٹ میں 16 ہندسے ہوں تو اسے مائیکرو سیکنڈ ٹائم اسٹیمپ کے طور پر سمجھا جاتا ہے
یہ خودکار شناخت صارفین کو ٹائم اسٹیمپ کی قسم کی وضاحت کرنے کی ضرورت کو ختم کرتی ہے، جس سے ٹول کو زیادہ صارف دوست اور موثر بنایا جاتا ہے۔
وقت کی شکل کے اختیارات
یہ کنورٹر دو وقت کی شکل کے اختیارات فراہم کرتا ہے:
-
24 گھنٹے کی شکل (جسے کبھی کبھار "ملٹری وقت" بھی کہا جاتا ہے): گھنٹے 0 سے 23 تک ہوتے ہیں، اور AM/PM کی تفریق نہیں ہوتی۔ مثال کے طور پر، 3:00 PM کو 15:00 کے طور پر ظاہر کیا جاتا ہے۔
-
12 گھنٹے کی شکل: گھنٹے 1 سے 12 تک ہوتے ہیں، آدھی رات سے دوپہر تک کے اوقات کے لیے AM (ante meridiem) اور دوپہر سے آدھی رات تک کے اوقات کے لیے PM (post meridiem) ہوتا ہے۔ مثال کے طور پر، 24 گھنٹے کی شکل میں 15:00 کو 3:00 PM کے طور پر ظاہر کیا جاتا ہے۔
ان شکلوں کے درمیان انتخاب بنیادی طور پر علاقائی روایات اور ذاتی ترجیحات کا معاملہ ہے:
- 24 گھنٹے کی شکل زیادہ تر یورپ، لاطینی امریکہ اور ایشیا میں استعمال ہوتی ہے، نیز دنیا بھر میں سائنسی، فوجی اور طبی سیاق و سباق میں۔
- 12 گھنٹے کی شکل امریکہ، کینیڈا، آسٹریلیا اور کچھ دیگر انگریزی بولنے والے ممالک میں روزمرہ استعمال کے لیے عام ہے۔
سرحدی کیسز اور حدود
مختلف درستگی کے یونکس ٹائم اسٹیمپس کے ساتھ کام کرتے وقت، کئی سرحدی کیسز اور حدود سے آگاہ ہونا ضروری ہے:
-
منفی ٹائم اسٹیمپس: یہ یونکس ایپوک (1 جنوری 1970) سے پہلے کی تاریخوں کی نمائندگی کرتے ہیں۔ اگرچہ ریاضی کے لحاظ سے درست ہیں، لیکن کچھ سسٹمز منفی ٹائم اسٹیمپس کو صحیح طریقے سے سنبھال نہیں سکتے۔ یہ تینوں ٹائم اسٹیمپ کی شکلوں پر لاگو ہوتا ہے۔
-
سال 2038 کا مسئلہ: معیاری یونکس ٹائم اسٹیمپس (10 ہندسے) اکثر 32-بٹ دستخط شدہ انٹیجر کے طور پر ذخیرہ کیے جاتے ہیں، جو 19 جنوری 2038 پر اوور فلو ہو جائیں گے۔ اس کے بعد، 32-بٹ سسٹمز صحیح طریقے سے اوقات کی نمائندگی کرنے میں ناکام رہیں گے جب تک کہ انہیں بڑے عددی قسم کے استعمال کے لیے تبدیل نہ کیا جائے۔
-
درستگی کے حوالے:
- معیاری ٹائم اسٹیمپس (10 ہندسے) سیکنڈ کی سطح کی درستگی رکھتے ہیں، جو زیادہ تر روزمرہ کی درخواستوں کے لیے کافی ہے۔
- ملی سیکنڈ ٹائم اسٹیمپس (13 ہندسے) 1000 گنا زیادہ درستگی فراہم کرتے ہیں، جو زیادہ درست وقت کی ضرورت والی درخواستوں کے لیے مفید ہیں۔
- مائیکرو سیکنڈ ٹائم اسٹیمپس (16 ہندسے) اور بھی زیادہ درستگی (1,000,000 واں حصہ) فراہم کرتے ہیں، جو ہائی پرفارمنس کمپیوٹنگ، سائنسی درخواستوں، اور مخصوص مالی معاملات کے لیے ضروری ہیں۔
-
انتہائی بڑے ٹائم اسٹیمپس: بہت دور کی مستقبل کی تاریخیں بعض سسٹمز میں نمائندگی کے قابل نہیں ہو سکتی ہیں، یا غیر متوازن طریقے سے سنبھالی جا سکتی ہیں۔ یہ خاص طور پر ملی سیکنڈ اور مائیکرو سیکنڈ ٹائم اسٹیمپس کے لیے اہم ہے، جو بڑے عددی اقدار کا استعمال کرتے ہیں۔
-
لیپ سیکنڈز: یونکس وقت لیپ سیکنڈز کو مدنظر نہیں رکھتا، جو کبھی کبھار UTC میں زمین کی بے قاعدہ گردش کی تلافی کے لیے شامل کیے جاتے ہیں۔ اس کا مطلب یہ ہے کہ یونکس وقت فلکیاتی وقت کے ساتھ درست طور پر ہم آہنگ نہیں ہے۔
-
ٹائم زون کے حوالے: یونکس ٹائم UTC میں لمحوں کی نمائندگی کرتا ہے۔ مقامی وقت میں تبدیل کرنے کے لیے اضافی ٹائم زون کی معلومات کی ضرورت ہوتی ہے۔
-
ڈے لائٹ سیونگ ٹائم: ٹائم اسٹیمپس کو مقامی وقت میں تبدیل کرتے وقت، ڈے لائٹ سیونگ ٹائم کی تبدیلیوں کی پیچیدگیوں پر غور کرنا ضروری ہے۔
-
ٹائم اسٹیمپ کی شکل کی الجھن: مناسب شناخت کے بغیر، 13 ہندسے کا ملی سیکنڈ ٹائم اسٹیمپ غلطی سے ایک بہت دور کی مستقبل کی تاریخ کے طور پر سمجھا جا سکتا ہے اگر اسے سیکنڈ کی بنیاد پر ٹائم اسٹیمپ کے طور پر سمجھا جائے۔ ہمارا کنورٹر اس کو ہندسے کی لمبائی کی بنیاد پر خودکار شناخت کرکے روکتا ہے۔
استعمال کے کیسز
مختلف درستگی کے یونکس ٹائم اسٹیمپس کمپیوٹنگ اور ڈیٹا کے انتظام میں متعدد درخواستوں میں استعمال ہوتے ہیں:
-
ڈیٹا بیس کے ریکارڈ: ٹائم اسٹیمپس عام طور پر یہ ریکارڈ کرنے کے لیے استعمال ہوتے ہیں کہ اندراجات کب بنائے گئے یا تبدیل کیے گئے۔
- معیاری ٹائم اسٹیمپس (10 ہندسے) عام ڈیٹا بیس کی درخواستوں کے لیے اکثر کافی ہوتے ہیں۔
- ملی سیکنڈ ٹائم اسٹیمپس (13 ہندسے) زیادہ درست ترتیب کی ضرورت والی درخواستوں کے لیے استعمال ہوتے ہیں۔
-
ویب ڈویلپمنٹ: HTTP ہیڈرز، کوکیز، اور کیشنگ کے طریقہ کار اکثر یونکس ٹائم اسٹیمپس کا استعمال کرتے ہیں۔
- جاوا اسکرپٹ کا
Date.now()
ملی سیکنڈ ٹائم اسٹیمپس (13 ہندسے) واپس کرتا ہے۔
- جاوا اسکرپٹ کا
-
لاگ فائلیں: سسٹم کے لاگ عام طور پر واقعات کو درست ترتیب میں ریکارڈ کرنے کے لیے یونکس ٹائم اسٹیمپس کے ساتھ ہوتے ہیں۔
- ہائی فریکوئنسی لاگنگ سسٹمز ملی سیکنڈ یا مائیکرو سیکنڈ کی درستگی کا استعمال کر سکتے ہیں۔
-
ورژن کنٹرول سسٹمز: Git اور دیگر VCS ٹائم اسٹیمپس کا استعمال کرتے ہیں تاکہ یہ ریکارڈ کیا جا سکے کہ کمیٹس کب کی گئیں۔
-
API کے جوابات: بہت سے ویب APIs اپنے جوابات میں ٹائم اسٹیمپس شامل کرتے ہیں تاکہ یہ اشارہ کیا جا سکے کہ ڈیٹا کب تیار کیا گیا یا وسائل کب آخری بار تبدیل کیے گئے۔
- REST APIs اکثر ملی سیکنڈ کی درستگی کے ٹائم اسٹیمپس کا استعمال کرتے ہیں۔
-
فائل سسٹمز: فائل کی تخلیق اور تبدیلی کے اوقات اکثر یونکس ٹائم اسٹیمپس کے طور پر ذخیرہ کیے جاتے ہیں۔
-
سیشن مینجمنٹ: ویب ایپلیکیشنز ٹائم اسٹیمپس کا استعمال کرتی ہیں تاکہ یہ طے کیا جا سکے کہ صارف کے سیشن کب ختم ہونے چاہئیں۔
-
ڈیٹا تجزیہ: ٹائم اسٹیمپس تجزیاتی ایپلیکیشنز میں عارضی ڈیٹا کے ساتھ کام کرنے کے لیے ایک معیاری طریقہ فراہم کرتے ہیں۔
-
ہائی فریکوئنسی ٹریڈنگ: مالیاتی نظام اکثر مائیکرو سیکنڈ کی درستگی (16 ہندسے) کی ضرورت ہوتی ہے تاکہ لین دین کی درست ترتیب کو یقینی بنایا جا سکے۔
-
سائنسی پیمائشیں: تحقیق کے آلات مشاہدات کو درست عارضی تجزیے کے لیے مائیکرو سیکنڈ کی درستگی کے ساتھ ریکارڈ کر سکتے ہیں۔
متبادل
اگرچہ یونکس ٹائم اسٹیمپس وسیع پیمانے پر استعمال ہوتے ہیں، لیکن کچھ سیاق و سباق میں زیادہ موزوں وقت کی نمائندگی کے متبادل فارمیٹس ہو سکتے ہیں:
-
ISO 8601: ایک معیاری سٹرنگ فارمیٹ (جیسے "2021-01-01T00:00:00Z") جو انسانی پڑھنے کے قابل ہے جبکہ ترتیب کی قابلیت کو برقرار رکھتا ہے۔ یہ اکثر ڈیٹا کے تبادلے اور صارف کے سامنے کی درخواستوں کے لیے ترجیح دی جاتی ہے۔
-
RFC 3339: ISO 8601 کا ایک پروفائل جو انٹرنیٹ کے پروٹوکولز میں استعمال ہوتا ہے، سخت فارمیٹنگ کی ضروریات کے ساتھ۔
-
انسانی پڑھنے کے قابل فارمیٹس: مقامی تاریخ کی سٹرنگز (جیسے "1 جنوری 2021") براہ راست صارف کی تعامل کے لیے زیادہ موزوں ہیں لیکن حساب کے لیے کم موزوں ہیں۔
-
مائیکروسافٹ FILETIME: ایک 64-بٹ قیمت جو 1 جنوری 1601 سے 100-نانو سیکنڈ کے وقفوں کی تعداد کی نمائندگی کرتی ہے، جو ونڈوز سسٹمز میں استعمال ہوتی ہے۔
-
جولین دن نمبر: جو فلکیات اور کچھ سائنسی درخواستوں میں استعمال ہوتا ہے، جو 4713 قبل مسیح سے دنوں کی گنتی کرتا ہے۔
وقت کی شکل کا انتخاب کئی عوامل پر منحصر ہے:
- درکار درستگی
- انسانی پڑھنے کی ضروریات
- ذخیرہ کرنے کی حدود
- موجودہ سسٹمز کے ساتھ مطابقت
- تاریخوں کی رینج جو نمائندگی کی ضرورت ہے
تاریخ
یونکس وقت کا تصور یونکس آپریٹنگ سسٹم کی ترقی کے ساتھ بیل لیبز میں 1960 کی دہائی کے آخر اور 1970 کی دہائی کے اوائل میں شروع ہوا۔ ایپوک کے طور پر 1 جنوری 1970 کا انتخاب کچھ حد تک بے ترتیب تھا لیکن اس وقت کے لیے عملی تھا—یہ دلچسپی کی تاریخوں کے لیے ذخیرہ کرنے کی ضروریات کو کم کرنے کے لیے حالیہ تھا لیکن ماضی میں اتنا دور تھا کہ تاریخی ڈیٹا کے لیے مفید ہو۔
اصل میں، اس نے سیکنڈز کی تعداد کو ذخیرہ کرنے کے لیے 32-بٹ دستخط شدہ انٹیجر کا استعمال کیا، جو اس وقت کے لیے یونکس سسٹمز کی متوقع عمر کے لیے کافی تھا۔ تاہم، اس فیصلے نے سال 2038 کے مسئلے کی وجہ بن گئی (کبھی کبھی "Y2K38" یا "یونکس صدی کا بگ" کہا جاتا ہے)، کیونکہ 32-بٹ دستخط شدہ انٹیجر صرف 19 جنوری 2038 (03:14:07 UTC) تک کی تاریخوں کی نمائندگی کر سکتا ہے۔
جیسے جیسے کمپیوٹنگ کی ضروریات ترقی پذیر ہوئیں، زیادہ درستگی کے ٹائم اسٹیمپس کی ضرورت پیش آئی:
-
ملی سیکنڈ کی درستگی (13 ہندسے) تعاملاتی کمپیوٹنگ کے عروج اور صارف کے انٹرفیس کی جوابدہی کو ناپنے کی ضرورت کے ساتھ عام ہو گئی۔
-
مائیکرو سیکنڈ کی درستگی (16 ہندسے) ہائی پرفارمنس کمپیوٹنگ ایپلیکیشنز اور نظاموں کے ساتھ ابھری جو انتہائی درست وقت کی ضرورت رکھتے تھے۔
جیسے جیسے یونکس اور یونکس جیسے آپریٹنگ سسٹمز مقبول ہوئے، یونکس ٹائم اسٹیمپ کمپیوٹنگ میں ایک ڈی فیکٹو معیار بن گیا۔ یہ متعدد پروگرامنگ زبانوں، ڈیٹا بیس، اور ایپلیکیشنز کے ذریعہ اپنایا گیا، جو اپنے اصل یونکس ماحول سے بہت آگے تک پھیل گیا۔
جدید سسٹمز میں بڑھتی ہوئی 64-بٹ انٹیجرز کا استعمال ٹائم اسٹیمپس کے لیے، جو ایپوک سے تقریباً 292 ارب سال کے دونوں طرف کی نمائندگی کی حد کو بڑھاتا ہے، سال 2038 کے مسئلے کو مؤثر طریقے سے حل کرتا ہے۔ تاہم، وراثتی سسٹمز اور ایپلیکیشنز اب بھی خطرے میں ہو سکتی ہیں۔
یونکس ٹائم کی سادگی اور افادیت نے اس کی جاری اہمیت کو یقینی بنایا ہے، حالانکہ زیادہ جدید وقت کی نمائندگی کے فارمیٹس تیار ہوئے ہیں۔ یہ کمپیوٹنگ میں ایک بنیادی تصور ہے، جو ہماری ڈیجیٹل بنیادی ڈھانچے کی بنیاد رکھتا ہے۔
کوڈ کے مثالیں
یہاں مختلف پروگرامنگ زبانوں میں مختلف درستگی کے یونکس ٹائم اسٹیمپس کو انسانی پڑھنے کے قابل تاریخوں میں تبدیل کرنے کے طریقے کی مثالیں ہیں:
1// جاوا اسکرپٹ ٹائم اسٹیمپ کی تبدیلی خودکار شکل کی شناخت کے ساتھ
2function convertTimestamp(timestamp, use12Hour = false) {
3 // اگر ضرورت ہو تو سٹرنگ کو نمبر میں تبدیل کریں
4 const numericTimestamp = Number(timestamp);
5
6 // ہندسے کی لمبائی کی بنیاد پر ٹائم اسٹیمپ کی شکل کی شناخت کریں
7 let date;
8 if (timestamp.length === 16) {
9 // مائیکرو سیکنڈ کی درستگی (سیکنڈز حاصل کرنے کے لیے 1,000,000 سے تقسیم کریں)
10 date = new Date(numericTimestamp / 1000);
11 console.log("پہچانا گیا: مائیکرو سیکنڈ کی درستگی کا ٹائم اسٹیمپ");
12 } else if (timestamp.length === 13) {
13 // ملی سیکنڈ کی درستگی
14 date = new Date(numericTimestamp);
15 console.log("پہچانا گیا: ملی سیکنڈ کی درستگی کا ٹائم اسٹیمپ");
16 } else if (timestamp.length === 10) {
17 // معیاری یونکس ٹائم اسٹیمپ (سیکنڈ)
18 date = new Date(numericTimestamp * 1000);
19 console.log("پہچانا گیا: معیاری یونکس ٹائم اسٹیمپ (سیکنڈ)");
20 } else {
21 throw new Error("غلط ٹائم اسٹیمپ کی شکل۔ 10، 13، یا 16 ہندسے کی توقع کی گئی۔");
22 }
23
24 // شکل کے اختیارات
25 const options = {
26 year: 'numeric',
27 month: 'long',
28 day: 'numeric',
29 weekday: 'long',
30 hour: use12Hour ? 'numeric' : '2-digit',
31 minute: '2-digit',
32 second: '2-digit',
33 hour12: use12Hour
34 };
35
36 // مقامی فارمیٹنگ کا استعمال کرتے ہوئے سٹرنگ میں تبدیل کریں
37 return date.toLocaleString(undefined, options);
38}
39
40// مثال کے استعمال
41try {
42 // معیاری یونکس ٹائم اسٹیمپ (10 ہندسے)
43 console.log(convertTimestamp("1609459200", false));
44
45 // ملی سیکنڈ کی درستگی (13 ہندسے)
46 console.log(convertTimestamp("1609459200000", false));
47
48 // مائیکرو سیکنڈ کی درستگی (16 ہندسے)
49 console.log(convertTimestamp("1609459200000000", true));
50} catch (error) {
51 console.error(error.message);
52}
53
1# پائتھون ٹائم اسٹیمپ کی تبدیلی خودکار شکل کی شناخت کے ساتھ
2import datetime
3
4def convert_timestamp(timestamp, use_12hour=False):
5 # عدد میں تبدیل کریں
6 timestamp = str(timestamp).strip()
7 numeric_timestamp = int(timestamp)
8
9 # ہندسے کی لمبائی کی بنیاد پر ٹائم اسٹیمپ کی شکل کی شناخت کریں
10 if len(timestamp) == 16:
11 # مائیکرو سیکنڈ کی درستگی (سیکنڈز حاصل کرنے کے لیے 1,000,000 سے تقسیم کریں)
12 date = datetime.datetime.fromtimestamp(numeric_timestamp / 1000000)
13 print("پہچانا گیا: مائیکرو سیکنڈ کی درستگی کا ٹائم اسٹیمپ")
14 elif len(timestamp) == 13:
15 # ملی سیکنڈ کی درستگی (سیکنڈز حاصل کرنے کے لیے 1,000 سے تقسیم کریں)
16 date = datetime.datetime.fromtimestamp(numeric_timestamp / 1000)
17 print("پہچانا گیا: ملی سیکنڈ کی درستگی کا ٹائم اسٹیمپ")
18 elif len(timestamp) == 10:
19 # معیاری یونکس ٹائم اسٹیمپ (سیکنڈ)
20 date = datetime.datetime.fromtimestamp(numeric_timestamp)
21 print("پہچانا گیا: معیاری یونکس ٹائم اسٹیمپ (سیکنڈ)")
22 else:
23 raise ValueError("غلط ٹائم اسٹیمپ کی شکل۔ 10، 13، یا 16 ہندسے کی توقع کی گئی۔")
24
25 # تاریخ کی سٹرنگ کی شکل
26 if use_12hour:
27 format_string = "%A, %B %d, %Y %I:%M:%S %p" # 12 گھنٹے کی شکل AM/PM کے ساتھ
28 else:
29 format_string = "%A, %B %d, %Y %H:%M:%S" # 24 گھنٹے کی شکل
30
31 return date.strftime(format_string)
32
33# مثال کے استعمال
34try:
35 # معیاری یونکس ٹائم اسٹیمپ (10 ہندسے)
36 print(convert_timestamp("1609459200", False))
37
38 # ملی سیکنڈ کی درستگی (13 ہندسے)
39 print(convert_timestamp("1609459200000", False))
40
41 # مائیکرو سیکنڈ کی درستگی (16 ہندسے)
42 print(convert_timestamp("1609459200000000", True))
43except ValueError as e:
44 print(e)
45
1<?php
2// پی ایچ پی ٹائم اسٹیمپ کی تبدیلی خودکار شکل کی شناخت کے ساتھ
3function convertTimestamp($timestamp, $use12Hour = false) {
4 // ان پٹ کے لیے سٹرنگ کو یقینی بنائیں
5 $timestamp = trim((string)$timestamp);
6
7 // ہندسے کی لمبائی کی بنیاد پر ٹائم اسٹیمپ کی شکل کی شناخت کریں
8 if (strlen($timestamp) === 16) {
9 // مائیکرو سیکنڈ کی درستگی (سیکنڈز حاصل کرنے کے لیے 1,000,000 سے تقسیم کریں)
10 $seconds = $numericTimestamp / 1000000;
11 echo "پہچانا گیا: مائیکرو سیکنڈ کی درستگی کا ٹائم اسٹیمپ\n";
12 } elseif (strlen($timestamp) === 13) {
13 // ملی سیکنڈ کی درستگی
14 $seconds = $numericTimestamp / 1000;
15 echo "پہچانا گیا: ملی سیکنڈ کی درستگی کا ٹائم اسٹیمپ\n";
16 } elseif (strlen($timestamp) === 10) {
17 // معیاری یونکس ٹائم اسٹیمپ (سیکنڈ)
18 $seconds = $numericTimestamp;
19 echo "پہچانا گیا: معیاری یونکس ٹائم اسٹیمپ (سیکنڈ)\n";
20 } else {
21 throw new Exception("غلط ٹائم اسٹیمپ کی شکل۔ 10، 13، یا 16 ہندسے کی توقع کی گئی۔");
22 }
23
24 // شکل کا سٹرنگ
25 $formatString = $use12Hour
26 ? 'l, F j, Y g:i:s A' // 12 گھنٹے کی شکل AM/PM کے ساتھ
27 : 'l, F j, Y H:i:s'; // 24 گھنٹے کی شکل
28
29 // تاریخ کو تبدیل کریں اور شکل دیں
30 return date($formatString, $seconds);
31}
32
33// مثال کے استعمال
34try {
35 // معیاری یونکس ٹائم اسٹیمپ (10 ہندسے)
36 echo convertTimestamp("1609459200", false) . "\n";
37
38 // ملی سیکنڈ کی درستگی (13 ہندسے)
39 echo convertTimestamp("1609459200000", false) . "\n";
40
41 // مائیکرو سیکنڈ کی درستگی (16 ہندسے)
42 echo convertTimestamp("1609459200000000", true) . "\n";
43} catch (Exception $e) {
44 echo $e->getMessage() . "\n";
45}
46?>
47
1// جاوا ٹائم اسٹیمپ کی تبدیلی خودکار شکل کی شناخت کے ساتھ
2import java.time.Instant;
3import java.time.LocalDateTime;
4import java.time.ZoneId;
5import java.time.format.DateTimeFormatter;
6
7public class TimestampConverter {
8 public static String convertTimestamp(String timestamp, boolean use12Hour) {
9 // ان پٹ کو ٹرم کریں
10 timestamp = timestamp.trim();
11
12 // ہندسے کی لمبائی کی بنیاد پر ٹائم اسٹیمپ کی شکل کی شناخت کریں
13 LocalDateTime dateTime;
14 if (timestamp.length() == 16) {
15 // مائیکرو سیکنڈ کی درستگی (سیکنڈز حاصل کرنے کے لیے 1,000,000 سے تقسیم کریں)
16 long microseconds = Long.parseLong(timestamp);
17 Instant instant = Instant.ofEpochSecond(0, microseconds * 1000); // نینو سیکنڈز میں تبدیل کریں
18 dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
19 System.out.println("پہچانا گیا: مائیکرو سیکنڈ کی درستگی کا ٹائم اسٹیمپ");
20 } else if (timestamp.length() == 13) {
21 // ملی سیکنڈ کی درستگی
22 long milliseconds = Long.parseLong(timestamp);
23 Instant instant = Instant.ofEpochMilli(milliseconds);
24 dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
25 System.out.println("پہچانا گیا: ملی سیکنڈ کی درستگی کا ٹائم اسٹیمپ");
26 } else if (timestamp.length() == 10) {
27 // معیاری یونکس ٹائم اسٹیمپ (سیکنڈ)
28 long seconds = Long.parseLong(timestamp);
29 Instant instant = Instant.ofEpochSecond(seconds);
30 dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
31 System.out.println("پہچانا گیا: معیاری یونکس ٹائم اسٹیمپ (سیکنڈ)");
32 } else {
33 throw new IllegalArgumentException("غلط ٹائم اسٹیمپ کی شکل۔ 10، 13، یا 16 ہندسے کی توقع کی گئی۔");
34 }
35
36 // مطلوبہ شکل کی بنیاد پر فارمیٹر بنائیں
37 DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
38 use12Hour ? "EEEE, MMMM d, yyyy h:mm:ss a" : "EEEE, MMMM d, yyyy HH:mm:ss"
39 );
40
41 // تاریخ کی شکل دیں
42 return dateTime.format(formatter);
43 }
44
45 public static void main(String[] args) {
46 try {
47 // معیاری یونکس ٹائم اسٹیمپ (10 ہندسے)
48 System.out.println(convertTimestamp("1609459200", false));
49
50 // ملی سیکنڈ کی درستگی (13 ہندسے)
51 System.out.println(convertTimestamp("1609459200000", false));
52
53 // مائیکرو سیکنڈ کی درستگی (16 ہندسے)
54 System.out.println(convertTimestamp("1609459200000000", true));
55 } catch (IllegalArgumentException e) {
56 System.err.println(e.getMessage());
57 }
58 }
59}
60
1// C# ٹائم اسٹیمپ کی تبدیلی خودکار شکل کی شناخت کے ساتھ
2using System;
3
4class TimestampConverter
5{
6 public static string ConvertTimestamp(string timestamp, bool use12Hour)
7 {
8 // ان پٹ کو ٹرم کریں
9 timestamp = timestamp.Trim();
10
11 // ہندسے کی لمبائی کی بنیاد پر ٹائم اسٹیمپ کی شکل کی شناخت کریں
12 DateTime dateTime;
13 if (timestamp.Length == 16)
14 {
15 // مائیکرو سیکنڈ کی درستگی (سیکنڈز حاصل کرنے کے لیے 1,000,000 سے تقسیم کریں)
16 if (!double.TryParse(timestamp, out double microseconds))
17 throw new ArgumentException("غلط ٹائم اسٹیمپ کی شکل");
18
19 // مائیکرو سیکنڈز کو DateTime میں تبدیل کریں
20 dateTime = DateTimeOffset.FromUnixTimeSeconds(0).DateTime.AddSeconds(microseconds / 1000000);
21 Console.WriteLine("پہچانا گیا: مائیکرو سیکنڈ کی درستگی کا ٹائم اسٹیمپ");
22 }
23 else if (timestamp.Length == 13)
24 {
25 // ملی سیکنڈ کی درستگی
26 if (!long.TryParse(timestamp, out long milliseconds))
27 throw new ArgumentException("غلط ٹائم اسٹیمپ کی شکل");
28
29 dateTime = DateTimeOffset.FromUnixTimeMilliseconds(milliseconds).DateTime;
30 Console.WriteLine("پہچانا گیا: ملی سیکنڈ کی درستگی کا ٹائم اسٹیمپ");
31 }
32 else if (timestamp.Length == 10)
33 {
34 // معیاری یونکس ٹائم اسٹیمپ (سیکنڈ)
35 if (!long.TryParse(timestamp, out long seconds))
36 throw new ArgumentException("غلط ٹائم اسٹیمپ کی شکل");
37
38 dateTime = DateTimeOffset.FromUnixTimeSeconds(seconds).DateTime;
39 Console.WriteLine("پہچانا گیا: معیاری یونکس ٹائم اسٹیمپ (سیکنڈ)");
40 }
41 else
42 {
43 throw new ArgumentException("غلط ٹائم اسٹیمپ کی شکل۔ 10، 13، یا 16 ہندسے کی توقع کی گئی۔");
44 }
45
46 // 12 گھنٹے یا 24 گھنٹے کی پسند کے مطابق شکل کا سٹرنگ
47 string formatString = use12Hour
48 ? "dddd, MMMM d, yyyy h:mm:ss tt" // 12 گھنٹے کی شکل AM/PM کے ساتھ
49 : "dddd, MMMM d, yyyy HH:mm:ss"; // 24 گھنٹے کی شکل
50
51 // شکل دی گئی تاریخ کی سٹرنگ واپس کریں
52 return dateTime.ToString(formatString);
53 }
54
55 static void Main()
56 {
57 try
58 {
59 // معیاری یونکس ٹائم اسٹیمپ (10 ہندسے)
60 Console.WriteLine(ConvertTimestamp("1609459200", false));
61
62 // ملی سیکنڈ کی درستگی (13 ہندسے)
63 Console.WriteLine(ConvertTimestamp("1609459200000", false));
64
65 // مائیکرو سیکنڈ کی درستگی (16 ہندسے)
66 Console.WriteLine(ConvertTimestamp("1609459200000000", true));
67 }
68 catch (ArgumentException e)
69 {
70 Console.WriteLine(e.Message);
71 }
72 }
73}
74
سرحدی کیسز کو سنبھالنا
مختلف درستگی کے یونکس ٹائم اسٹیمپس کے ساتھ کام کرتے وقت، یہ ضروری ہے کہ سرحدی کیسز کو صحیح طریقے سے سنبھالا جائے۔ یہاں ایک مثال ہے جو جامع سرحدی کیس کی ہینڈلنگ کو ظاہر کرتی ہے:
1// جاوا اسکرپٹ جامع سرحدی کیس کی ہینڈلنگ مختلف ٹائم اسٹیمپ کی شکلوں کے لیے
2function safeConvertTimestamp(timestamp, use12Hour = false) {
3 // ان پٹ کی توثیق
4 if (timestamp === undefined || timestamp === null || timestamp === '') {
5 return "غلطی: خالی یا غیر معین ٹائم اسٹیمپ";
6 }
7
8 // ہندسے کی لمبائی کی بنیاد پر ٹائم اسٹیمپ کی شکل کی شناخت کریں
9 const timestampStr = String(timestamp).trim();
10
11 // چیک کریں کہ آیا ٹائم اسٹیمپ میں صرف ہندسے ہیں
12 if (!/^\d+$/.test(timestampStr)) {
13 return "غلطی: ٹائم اسٹیمپ میں صرف ہندسے ہونے چاہئیں";
14 }
15
16 // شکل کی شناخت کریں
17 let date;
18 try {
19 if (timestampStr.length === 16) {
20 // مائیکرو سیکنڈ کی درستگی
21 const microseconds = Number(timestampStr);
22 date = new Date(microseconds / 1000); // ملی سیکنڈز میں تبدیل کریں
23 console.log("مائیکرو سیکنڈ کے ٹائم اسٹیمپ کی پروسیسنگ");
24
25 // غلط تاریخ کے لیے چیک کریں
26 if (isNaN(date.getTime())) {
27 return "غلطی: نامناسب مائیکرو سیکنڈ کا ٹائم اسٹیمپ";
28 }
29 } else if (timestampStr.length === 13) {
30 // ملی سیکنڈ کی درستگی
31 const milliseconds = Number(timestampStr);
32 date = new Date(milliseconds);
33 console.log("ملی سیکنڈ کے ٹائم اسٹیمپ کی پروسیسنگ");
34
35 // غلط تاریخ کے لیے چیک کریں
36 if (isNaN(date.getTime())) {
37 return "غلطی: نامناسب ملی سیکنڈ کا ٹائم اسٹیمپ";
38 }
39 } else if (timestampStr.length === 10) {
40 // معیاری یونکس ٹائم اسٹیمپ (سیکنڈ)
41 const seconds = Number(timestampStr);
42 date = new Date(seconds * 1000);
43 console.log("معیاری ٹائم اسٹیمپ کی پروسیسنگ");
44
45 // غلط تاریخ کے لیے چیک کریں
46 if (isNaN(date.getTime())) {
47 return "غلطی: نامناسب معیاری ٹائم اسٹیمپ";
48 }
49
50 // Y2K38 مسئلے کے لیے چیک کریں (32-بٹ سسٹمز کے لیے)
51 const maxInt32 = 2147483647; // 32-بٹ دستخط شدہ انٹیجر کی زیادہ سے زیادہ قیمت
52 if (seconds > maxInt32) {
53 console.warn("خبردار: ٹائم اسٹیمپ 32-بٹ انٹیجر کی حد سے تجاوز کر گیا (Y2K38 مسئلہ)");
54 }
55 } else {
56 return "غلطی: ٹائم اسٹیمپ کی لمبائی غلط ہے۔ 10، 13، یا 16 ہندسے کی توقع کی گئی۔";
57 }
58
59 // تاریخ کی شکل دیں
60 const options = {
61 year: 'numeric',
62 month: 'long',
63 day: 'numeric',
64 weekday: 'long',
65 hour: use12Hour ? 'numeric' : '2-digit',
66 minute: '2-digit',
67 second: '2-digit',
68 hour12: use12Hour
69 };
70
71 return date.toLocaleString(undefined, options);
72 } catch (error) {
73 return "ٹائم اسٹیمپ کو تبدیل کرنے میں غلطی: " + error.message;
74 }
75}
76
77// مختلف سرحدی کیسز کے ساتھ ٹیسٹ کریں
78console.log(safeConvertTimestamp("1609459200")); // معیاری (10 ہندسے)
79console.log(safeConvertTimestamp("1609459200000")); // ملی سیکنڈ (13 ہندسے)
80console.log(safeConvertTimestamp("1609459200000000")); // مائیکرو سیکنڈ (16 ہندسے)
81console.log(safeConvertTimestamp("abc123")); // غیر عددی
82console.log(safeConvertTimestamp("12345")); // غلط لمبائی
83console.log(safeConvertTimestamp("9999999999999999")); // بہت بڑے مائیکرو سیکنڈ کے ٹائم اسٹیمپ
84console.log(safeConvertTimestamp("")); // خالی سٹرنگ
85
عمومی سوالات
یونکس ٹائم اسٹیمپ کیا ہے؟
یونکس ٹائم اسٹیمپ وہ سیکنڈز کی تعداد ہے جو 1 جنوری 1970 (آدھی رات UTC/GMT) کے بعد گزر چکے ہیں، لیپ سیکنڈز کو شمار کیے بغیر۔ یہ وقت کی ایک کمپیکٹ، زبان سے آزاد نمائندگی فراہم کرتا ہے۔
خودکار ٹائم اسٹیمپ کی شکل کی شناخت کیسے کام کرتی ہے؟
کنورٹر خود بخود ہندسے کی تعداد کی بنیاد پر ٹائم اسٹیمپ کی شکل کی شناخت کرتا ہے:
- 10 ہندسے: معیاری یونکس ٹائم اسٹیمپ (ایپوک کے بعد سیکنڈ)
- 13 ہندسے: ملی سیکنڈ کی درستگی کا ٹائم اسٹیمپ
- 16 ہندسے: مائیکرو سیکنڈ کی درستگی کا ٹائم اسٹیمپ
مجھے ملی سیکنڈ یا مائیکرو سیکنڈ کی درستگی کی کیوں ضرورت ہے؟
ملی سیکنڈ کی درستگی (13 ہندسے) ان درخواستوں کے لیے مفید ہے جن میں زیادہ درست وقت کی ضرورت ہوتی ہے، جیسے کارکردگی کی نگرانی، صارف کے تعامل کی ٹریکنگ، اور مخصوص مالی درخواستیں۔ مائیکرو سیکنڈ کی درستگی (16 ہندسے) ہائی پرفارمنس کمپیوٹنگ، سائنسی درخواستوں، اور ہائی فریکوئنسی ٹریڈنگ کے نظاموں کے لیے ضروری ہے جہاں انتہائی درست وقت کی ضرورت ہوتی ہے۔
کیا میں 1970 سے پہلے کی تاریخوں کو یونکس ٹائم اسٹیمپس کے ساتھ تبدیل کر سکتا ہوں؟
جی ہاں، 1 جنوری 1970 سے پہلے کی تاریخیں منفی ٹائم اسٹیمپس کے ذریعے نمائندگی کی جاتی ہیں۔ تاہم، کچھ سسٹمز منفی ٹائم اسٹیمپس کو صحیح طریقے سے سنبھال نہیں سکتے، لہذا اگر آپ کو تاریخی تاریخوں کے ساتھ کام کرنے کی ضرورت ہو تو اس فعالیت کی جانچ کرنا ضروری ہے۔
سال 2038 کا مسئلہ کیا ہے؟
سال 2038 کا مسئلہ اس لیے ہوتا ہے کہ بہت سے سسٹمز یونکس ٹائم اسٹیمپس کو 32-بٹ دستخط شدہ انٹیجر کے طور پر ذخیرہ کرتے ہیں، جو 19 جنوری 2038 تک کی تاریخوں کی نمائندگی کر سکتے ہیں (03:14:07 UTC)۔ اس کے بعد، عددی حد ختم ہو جائے گی، جس کی وجہ سے سسٹم کی ناکامی ہو سکتی ہے۔ جدید سسٹمز میں اس مسئلے سے بچنے کے لیے 64-بٹ انٹیجرز کے استعمال میں اضافہ ہو رہا ہے۔
میں یونکس ٹائم اسٹیمپس کے ساتھ ٹائم زون کی تبدیلی کیسے سنبھالوں؟
یونکس ٹائم ہمیشہ UTC (ہم Coordinated Universal Time) میں ہوتا ہے۔ مقامی وقت میں تبدیل کرنے کے لیے، آپ کو تاریخ کو تبدیل کرنے کے بعد مناسب آفسیٹ لگانے کی ضرورت ہوتی ہے۔ زیادہ تر پروگرامنگ زبانیں ٹائم زون کی تبدیلیوں کو سنبھالنے کے لیے بلٹ ان فنکشنز فراہم کرتی ہیں۔
یونکس وقت اور ISO 8601 میں کیا فرق ہے؟
یونکس وقت ایک عددی نمائندگی ہے (ایپوک کے بعد سیکنڈ)، جبکہ ISO 8601 ایک سٹرنگ فارمیٹ ہے (جیسے "2021-01-01T00:00:00Z")۔ یونکس وقت حسابات کے لیے زیادہ کمپیکٹ اور استعمال میں آسان ہے، جبکہ ISO 8601 زیادہ انسانی پڑھنے کے قابل اور خود وضاحتی ہے۔
یونکس ٹائم اسٹیمپس کتنے درست ہیں؟
معیاری یونکس ٹائم اسٹیمپس میں سیکنڈ کی سطح کی درستگی ہوتی ہے۔ زیادہ درستگی کی ضرورت والی درخواستوں کے لیے، ملی سیکنڈ ٹائم اسٹیمپس (13 ہندسے) 1/1000 سیکنڈ کی درستگی فراہم کرتے ہیں، اور مائیکرو سیکنڈ ٹائم اسٹیمپس (16 ہندسے) 1/1,000,000 سیکنڈ کی درستگی فراہم کرتے ہیں۔
کیا یونکس ٹائم لیپ سیکنڈز کو مدنظر رکھتا ہے؟
نہیں، یونکس وقت کو لیپ سیکنڈز کو مدنظر نہیں رکھا جاتا، جو کبھی کبھار UTC میں زمین کی بے قاعدہ گردش کی تلافی کے لیے شامل کیے جاتے ہیں۔ اس کا مطلب یہ ہے کہ یونکس وقت فلکیاتی وقت کے ساتھ درست طور پر ہم آہنگ نہیں ہے۔
کیا میں مستقبل کے واقعات کی منصوبہ بندی کے لیے یونکس ٹائم اسٹیمپس کا استعمال کر سکتا ہوں؟
جی ہاں، یونکس ٹائم اسٹیمپس منصوبہ بندی کے لیے وسیع پیمانے پر استعمال ہوتے ہیں۔ تاہم، بہت دور کی مستقبل کی تاریخوں کے لیے، ممکنہ حدود جیسے 32-بٹ سسٹمز کے لیے سال 2038 کا مسئلہ اور ٹائم زون کی تبدیلیوں اور ڈے لائٹ سیونگ ٹائم کی تبدیلیوں کو مدنظر رکھنا ضروری ہے۔
حوالہ جات
-
"یونکس وقت۔" ویکیپیڈیا، ویکیپیڈیا فاؤنڈیشن، https://en.wikipedia.org/wiki/Unix_time
-
"سال 2038 کا مسئلہ۔" ویکیپیڈیا، ویکیپیڈیا فاؤنڈیشن، https://en.wikipedia.org/wiki/Year_2038_problem
-
اولسن، آرٹھر ڈیوڈ۔ "کیلنڈر کے وقت کی پیچیدگیاں۔" اوپن گروپ، https://www.usenix.org/legacy/events/usenix01/full_papers/olson/olson.pdf
-
"ISO 8601۔" ویکیپیڈیا، ویکیپیڈیا فاؤنڈیشن، https://en.wikipedia.org/wiki/ISO_8601
-
"RFC 3339: انٹرنیٹ پر تاریخ اور وقت: ٹائم اسٹیمپس۔" انٹرنیٹ انجینئرنگ ٹاسک فورس (IETF)، https://tools.ietf.org/html/rfc3339
-
کرنِگھن، برائن W.، اور ڈینس ایم۔ رچ۔ "C پروگرامنگ زبان۔" پرینٹس ہال، 1988۔
-
"ہائی پرفارمنس کمپیوٹنگ میں درستگی کا وقت۔" ACM کمپیوٹنگ سروے، https://dl.acm.org/doi/10.1145/3232678
-
"مالیاتی نظاموں میں وقت کی نمائندگی۔" جرنل آف فنانشل ٹیکنالوجی، https://www.fintech-journal.com/time-representation
اب ہمارے ٹائم اسٹیمپ کنورٹر کا استعمال کریں تاکہ کسی بھی درستگی کے یونکس ٹائم اسٹیمپس کو انسانی پڑھنے کے قابل تاریخوں میں آسانی سے تبدیل کیا جا سکے۔ چاہے آپ معیاری یونکس ٹائم اسٹیمپس، ملی سیکنڈ کی درستگی، یا مائیکرو سیکنڈ کی درستگی کے ساتھ کام کر رہے ہوں، ہمارا ٹول خودکار طور پر شکل کی شناخت کرتا ہے اور درست تبدیلیاں فراہم کرتا ہے۔
تاثیر
اس ٹول کے بتور کو کلک کریں تاکہ اس ٹول کے بارے میں فیڈبیک دینا شروع کریں
متعلقہ اوزار
آپ کے ورک فلو کے لیے مفید ہونے والے مزید ٹولز کا انعام کریں