Unix Timestamp: یہ کیا ہے، تبدیلی اور موبائل ڈویلپمنٹ میں ذخیرہ

مصنف: IT Sectr اشاعت: 2026-07-14 مطالعے کا وقت: 9 منٹ

Unix Timestamp ایک عدد صحیح ہے جو یکم جنوری 1970 00:00:00 UTC سے گزرے ہوئے سیکنڈز کی تعداد کو ظاہر کرتا ہے۔ یہ عالمگیر وقت کا فارمیٹ آپریٹنگ سسٹمز، ڈیٹا بیسز، API اور موبائل ایپلی کیشنز میں ٹائم زون پر انحصار کیے بغیر ٹائم اسٹیمپ کو ذخیرہ کرنے اور منتقل کرنے کے لیے استعمال ہوتا ہے۔ Google Developers Blog (2025) کے مطابق، REST API میں وقت کی سیریلائزیشن کے لیے Unix Timestamp سب سے مقبول فارمیٹ ہے — 87% عوامی ویب انٹرفیس اسے استعمال کرتے ہیں۔

اہم نکات

  • Unix Timestamp — یکم جنوری 1970 UTC سے سیکنڈز کی تعداد، ایک غیر منفی عدد صحیح
  • عالمگیریت — فارمیٹ ٹائم زون پر منحصر نہیں ہے، جو سرور اور کلائنٹ کے درمیان ڈیٹا کے تبادلے کو آسان بناتا ہے
  • 2038 کا مسئلہ — 32 بٹ سسٹمز کے لیے، timestamp کی قیمت 2^31 سے تجاوز کر جائے گی، جس سے اوور فلو ہوگا
  • ملی سیکنڈز — Android اور Java میں اکثر ملی سیکنڈز میں Java Timestamp استعمال ہوتا ہے (Unix Timestamp x 1000)
  • ذخیرہ — timestamp ISO سٹرنگز سے زیادہ کمپیکٹ ہے اور ڈیٹا بیسز میں ترتیب اور موازنہ کے لیے زیادہ موثر ہے

Unix Timestamp کیا ہے؟

Unix Timestamp (POSIX time، Epoch time یا Unix time کے نام سے بھی جانا جاتا ہے) وقت کی پیمائش کا ایک نظام ہے جو یکم جنوری 1970 00:00:00 UTC (Unix عہد) سے گزرے ہوئے سیکنڈز کی تعداد کو متعین کرتا ہے۔ یہ تاریخ Unix آپریٹنگ سسٹم کے لیے نقطہ آغاز کے طور پر منتخب کی گئی تھی، اور بعد میں یہ فارمیٹ کمپیوٹنگ سسٹمز میں وقت کی نمائندگی کے لیے حقیقی معیار بن گیا۔ Timestamp لیپ سیکنڈز کو مدنظر نہیں رکھتا — ہر منٹ کو 60 سیکنڈ شمار کیا جاتا ہے، حالانکہ بین الاقوامی زمینی گردش سروس بعض اوقات ایٹمی وقت کو درست کرنے کے لیے ایک اضافی سیکنڈ شامل کرتی ہے۔

Unix عہد: 1970 کیوں؟

یکم جنوری 1970 کا انتخاب Unix آپریٹنگ سسٹم کی تاریخ سے جڑا ہوا ہے۔ ڈویلپرز Ken Thompson اور Dennis Ritchie نے اس تاریخ کو ایک سادہ گول نقطہ آغاز کے طور پر منتخب کیا — یہ تمام ممکنہ تاریخوں کو شامل کرنے کے لیے کافی ابتدائی تھی، اور وقت کو 32 بٹ سائنڈ عدد میں ذخیرہ کرنے کے لیے کافی دیر سے بھی تھی۔ ابتدائی طور پر، وقت سیکنڈ کے ساٹھویں حصے میں ناپا جاتا تھا، پھر ٹکس (1/60 سیکنڈ) میں، اور صرف Unix کے ساتویں ایڈیشن (V7، 1979) میں فارمیٹ سیکنڈز کی پوری تعداد کے طور پر مستحکم ہوا۔ The Open Group Base Specifications (Issue 8، 2024) کے مطابق، POSIX کے مطابق سسٹمز کے لیے اس فارمیٹ کو سپورٹ کرنا لازمی ہے۔

Unix Timestamp کیسے کام کرتا ہے

Unix Timestamp کے کام کرنے کا اصول ایک سادہ کاؤنٹر پر مبنی ہے: ہر گزرتا ہوا دن قدر میں 86،400 سیکنڈ کا اضافہ کرتا ہے۔ مثال کے طور پر، timestamp 1،720،000،000 2024 کے وسط کی تاریخ سے مطابقت رکھتا ہے — درست تبدیلی ایک دن، گھنٹے اور منٹ میں سیکنڈز کی تعداد سے تقسیم کرکے کی جا سکتی ہے۔ یہ نقطہ نظر timestamp کو مشینی ذخیرہ کے لیے مثالی بناتا ہے: یہ ایک عدد صحیح ہے جو 4 بائٹس (32 بٹ int) یا 8 بائٹس (64 بٹ long) لیتا ہے اور براہ راست موازنہ کی حمایت کرتا ہے — بڑا timestamp = بعد کی تاریخ۔

تبدیلی کا ریاضی

ایک دن = 86،400 سیکنڈ (24 x 60 x 60)۔ ایک گھنٹہ = 3،600 سیکنڈ۔ Timestamp کو تاریخ میں تبدیل کرنے کے لیے، آپ کو عہد سے دنوں، گھنٹوں، منٹوں اور سیکنڈز کی تعداد کو ترتیب وار شمار کرنا ہوگا۔ الٹی تبدیلی — تاریخ کو 1970-01-01 سے دنوں میں تبدیل کریں، پھر 86،400 سے ضرب دیں اور UTC آفسیٹ شامل کریں۔ Java اور Kotlin میں، یہ حسابات پہلے سے معیاری کلاسز java.time.Instant اور java.util.Date میں نافذ ہیں، جو ڈویلپر کو دستی حسابات سے بچاتے ہیں۔

kotlin
        // Unix Timestamp سیکنڈز میں حاصل کریں
val seconds = System.currentTimeMillis() / 1000

// java.time کے ذریعے timestamp کو تاریخ میں تبدیل کریں
val instant = Instant.ofEpochSecond(seconds)
val localDate = instant.atZone(ZoneId.of("Europe/Moscow")).toLocalDate()

// الٹ: تاریخ سے timestamp
val date = LocalDate.of(2026, 7, 21)
val ts = date.atStartOfDay(ZoneOffset.UTC).toEpochSecond()

Unix Timestamp کو تاریخ میں تبدیل کرنا اور واپس

Unix Timestamp کو انسانی پڑھنے کے قابل تاریخ میں تبدیل کرنا موبائل ڈویلپمنٹ میں سب سے عام کارروائیوں میں سے ایک ہے۔ Android میں، کم از کم API ورژن کے لحاظ سے کئی تبدیلی کے طریقے دستیاب ہیں: API 26+ کے لیے java.time.Instant استعمال کرنے کی سفارش کی جاتی ہے، پرانے ورژنز کے لیے java.util.Date اور java.text.SimpleDateFormat استعمال ہوتے ہیں۔ یہ یاد رکھنا ضروری ہے کہ Android اور JVM ڈیفالٹ کے طور پر سیکنڈ نہیں بلکہ ملی سیکنڈ استعمال کرتے ہیں — اگر timestamp سرور سے سیکنڈز میں موصول ہوتا ہے تو اسے معیاری کنسٹرکٹرز میں دینے سے پہلے 1000 سے ضرب دینا ضروری ہے۔

ٹائم زون سے آگاہ تبدیلی

Unix Timestamp کا ایک اہم فائدہ مقام سے آزادی ہے۔ سرور ہمیشہ UTC میں timestamp واپس کرتا ہے، اور مقامی تاریخ اور وقت میں تبدیلی کلائنٹ کی طرف سے انجام دی جاتی ہے۔ Kotlin میں، مناسب ZoneId (سسٹم یا صارف کے انتخاب کردہ) کے ساتھ ZonedDateTime استعمال ہوتا ہے۔ اگر کوئی ایپلی کیشن مختلف ٹائم زونز میں وقت دکھاتی ہے (مثال کے طور پر، مسافروں کے لیے)، timestamp سرور سے ٹائم زون منتقل کرنے کی ضرورت کو ختم کرتا ہے — ایک واحد وقت کا نشان کافی ہے۔

kotlin
// صارف کے ٹائم زون کے ساتھ تبدیل کریں
fun formatTimestamp(seconds: Long, zoneId: ZoneId): String {
    val instant = Instant.ofEpochSecond(seconds)
    val formatter = DateTimeFormatter
        .ofPattern("dd.MM.yyyy HH:mm:ss")
    return formatter.format(instant.atZone(zoneId))
}

// مثال: timestamp = 1720000000, zone = Europe/Moscow
val result = formatTimestamp(1720000000, ZoneId.of("Europe/Moscow"))

2038 کا مسئلہ

2038 کا مسئلہ (Y2K38) Unix Timestamp کو 32 بٹ سائنڈ عدد صحیح کے طور پر ذخیرہ کرنے کی ایک بنیادی حد ہے۔ 32 بٹ سائنڈ int کی زیادہ سے زیادہ قیمت 2،147،483،647 ہے، جو 19 جنوری 2038 03:14:07 UTC کے مطابق ہے۔ اس تاریخ کے بعد، قیمت اوور فلو ہو جاتی ہے اور منفی عدد بن جاتی ہے، جس سے 32 بٹ time_t استعمال کرنے والے سسٹمز میں خرابیاں پیدا ہوتی ہیں۔ یہ مسئلہ معروف Y2K سے ملتا جلتا ہے، لیکن یہ بنیادی طور پر ایمبیڈڈ سسٹمز، پرانے Android ورژنز اور 32 بٹ آرکیٹیکچر والے IoT آلات کو متاثر کرتا ہے۔

مسئلے کا پیمانہ

Linux Foundation (2025) کے مطابق، صنعتی اور IoT حصوں میں تقریباً 15% Linux آلات اب بھی 32 بٹ بلڈ استعمال کرتے ہیں۔ Android آلات کے لیے، خطرہ کم ہے — زیادہ تر جدید اسمارٹ فونز 64 بٹ پروسیسرز (ARM64) پر چلتے ہیں، لیکن Android 4.x اور اس سے نیچے والے پرانے ماڈلز 32 بٹ time_t استعمال کر سکتے ہیں۔ حل 64 بٹ time_t کی طرف منتقلی ہے، جو 292 ارب سالوں تک محفوظ ہے۔ Android 5.0 (API 21) سے شروع کرتے ہوئے، تمام آلات کرنل سطح پر 64 بٹ وقت استعمال کرتے ہیں۔ موبائل ایپلی کیشن ڈویلپرز کو صرف timestamp کو Long (64 بٹ) میں ذخیرہ کرنے کی ضرورت ہے تاکہ ایپلی کیشن کی سطح پر مسئلے سے بچا جا سکے۔

Android میں Unix Timestamp کے ساتھ کام

Android ڈویلپمنٹ میں، Unix Timestamp کا صحیح طریقے سے سنبھالنا ڈیٹا سنکرونائزیشن، پیغام وصولی کے اوقات کی نمائش، ٹائم آؤٹ کا حساب اور نوٹیفیکیشنز کا شیڈولنگ کے لیے اہم ہے۔ سسٹم کال System.currentTimeMillis() Unix عہد سے ملی سیکنڈز میں موجودہ وقت واپس کرتی ہے — یہ آلہ پر دستیاب وقت کا سب سے درست ذریعہ ہے۔ نیٹ ورک کی درخواستوں کے لیے، عام طور پر سیکنڈز میں Unix Timestamp استعمال ہوتا ہے، کیونکہ زیادہ تر REST API اور ڈیٹا بیس سیکنڈز میں کام کرتے ہیں۔

تجویز کردہ طریقے

وقت کے وقفے ناپنے کے لیے کبھی بھی System.currentTimeMillis() استعمال نہ کریں — اس مقصد کے لیے System.nanoTime() ہے، جو یکساں ہے اور صارف کی گھڑی کی تبدیلیوں سے متاثر نہیں ہوتا۔ وقت ظاہر کرنے کے لیے، ہمیشہ timestamp کو UTC میں ذخیرہ کریں اور UI کی طرف مقامی ٹائم زون میں تبدیل کریں۔ ڈیٹا بیسز (SQLite، Room) کے ساتھ کام کرتے وقت، INTEGER ٹائپ استعمال کریں اور timestamp کو سیکنڈز میں ذخیرہ کریں — یہ 8 بائٹس (Long) لیتا ہے اور نیٹو SQL ترتیب کی حمایت کرتا ہے۔ JSON سیریلائزیشن کے لیے، timestamp کو سٹرنگ کی بجائے عدد (Long) کے طور پر بھیجنے کی سفارش کی جاتی ہے — یہ زیادہ کمپیکٹ ہے اور تیزی سے پارس ہوتا ہے۔

kotlin
// درست عملدرآمد وقت کی پیمائش
val start = System.nanoTime()
// ... کارروائی ...
val elapsed = System.nanoTime() - start
val seconds = elapsed / 1_000_000_000.0

// Room (Entity) میں ذخیرہ کریں
@Entity
data class Message(
    @PrimaryKey val id: Long,
    val text: String,
    val createdAt: Long // سیکنڈز میں Unix Timestamp
)

سرور کے وقت کو سنبھالنا

سرور سے Unix Timestamp وصول کرتے وقت، ہمیشہ پیمائش کی اکائی چیک کریں: کچھ API ملی سیکنڈز (JavaScript کے مطابق) واپس کرتی ہیں، دوسری سیکنڈز (POSIX معیار) واپس کرتی ہیں۔ اکائیوں پر معاہدہ API دستاویزات میں درج ہونا چاہیے۔ سرور کے جواب میں، timestamp کو Long (JSON عدد) یا String (ISO 8601) کے طور پر منتقل کیا جا سکتا ہے۔ ڈیبگنگ کے لیے، ایک یوٹیلیٹی فنکشن شامل کریں جو timestamp کو انسانی پڑھنے کے قابل فارمیٹ میں آؤٹ پٹ کرے — یہ ڈویلپمنٹ کے دوران وقت کے نشانات کی تصدیق کو آسان بناتا ہے۔

ڈیٹا بیسز میں ٹائم اسٹیمپ کا ذخیرہ

ڈیٹا بیس میں وقت ذخیرہ کرنے کے فارمیٹ کا انتخاب براہ راست استفسار کی کارکردگی، کوڈ کی پیچیدگی اور ٹائم زون ہینڈلنگ کی درستی کو متاثر کرتا ہے۔ Unix Timestamp رلیشنل ڈیٹا بیسز کے لیے سب سے موثر فارمیٹ ہے: یہ ایک عدد صحیح (4 یا 8 بائٹس) کے طور پر ذخیرہ ہوتا ہے، انڈیکسنگ کی حمایت کرتا ہے اور تیز ترتیب کی اجازت دیتا ہے۔ ISO 8601 سٹرنگز کے برعکس، timestamp ترتیب کے لیے پارسنگ کی ضرورت نہیں رکھتا اور انڈیکس میں کم جگہ لیتا ہے۔ Room اور SQLite کے لیے، timestamp کو INTEGER کے طور پر ذخیرہ کرنے اور وقت کے کالم پر انڈیکس استعمال کرنے کی سفارش کی جاتی ہے۔

ذخیرہ فارمیٹسائزترتیبانڈیکسنگ
Unix Timestamp (INTEGER)4–8 بائٹتیزموثر
ISO 8601 (TEXT)20–30 بائٹسستدرمیانہ
DATETIME (SQLite)8 بائٹدرمیانہدرمیانہ

موبائل پروجیکٹس کے لیے سفارشات

Room لائبریری استعمال کرنے والے Android ایپلی کیشنز کے لیے، timestamp کو Long (64 بٹ) کے طور پر ذخیرہ کرنے اور Long اور Date یا Instant کے درمیان خودکار تبدیلی کے لیے TypeConverter استعمال کرنے کی سفارش کی جاتی ہے۔ ڈیٹا بیس میں استفسار کرتے وقت، موازنہ آپریٹرز (>، <، BETWEEN) استعمال کریں — یہ عددی اقسام کے ساتھ نیٹو طور پر کام کرتے ہیں۔ وقت پر مبنی ترتیب کی ضرورت والے ڈیٹا (مثلاً پیغامات کی فہرست) کو کیش کرنے کے لیے، ہمیشہ timestamp کالم پر انڈیکس بنائیں — یہ بڑے ڈیٹا والیوم کے ساتھ ORDER BY والے استفسارات کو کئی گنا تیز کرے گا۔

اکثر پوچھے گئے سوالات

Unix Timestamp کیا ہے اور یہ کیسے کام کرتا ہے؟

Unix Timestamp یکم جنوری 1970 00:00:00 UTC سے سیکنڈز کی تعداد ہے۔ یہ ایک سادہ کاؤنٹر کی طرح کام کرتا ہے: ہر گزرتا ہوا دن 86،400 سیکنڈ کا اضافہ کرتا ہے۔ یہ ایک عدد صحیح ہے جسے ٹائم زون پر منحصر ہوئے بغیر سرور اور کلائنٹ کے درمیان آسانی سے موازنہ، ترتیب اور منتقل کیا جا سکتا ہے۔

Kotlin میں Unix Timestamp کو تاریخ میں کیسے تبدیل کریں؟

java.time (API 26+) کے لیے Instant.ofEpochSecond(timestamp) یا پرانے Android ورژنز کے لیے Date(timestamp * 1000) استعمال کریں۔ Instant حاصل کرنے کے بعد، اسے LocalDate، ZonedDateTime میں تبدیل کیا جا سکتا ہے یا DateTimeFormatter کے ذریعے فارمیٹ کیا جا سکتا ہے۔ اگر timestamp سیکنڈز میں ہے تو 1000 سے ضرب دینا نہ بھولیں۔

2038 کے مسئلے کا جوہر کیا ہے؟

19 جنوری 2038 03:14:07 UTC پر، 32 بٹ سائنڈ int کی قیمت (2،147،483،647) تجاوز کر جائے گی، جس سے اوور فلو ہوگا۔ 32 بٹ time_t والے سسٹمز وقت کو منفی عدد کے طور پر تعبیر کرنا شروع کر دیں گے۔ حل 64 بٹ time_t کی طرف منتقلی ہے، جو پہلے سے جدید Android آلات (API 21+) میں استعمال ہوتا ہے۔

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

سیکنڈز کے لیے System.currentTimeMillis() / 1000 یا ملی سیکنڈز کے لیے System.currentTimeMillis() کال کریں۔ نیٹ ورک سنکرونائزیشن کو مدنظر رکھتے ہوئے زیادہ درست نتیجہ کے لیے، Instant.now().epochSecond (API 26+ درکار) یا Android کے لیے NTP کلائنٹ لائبریریاں استعمال کریں۔

Unix Timestamp ملی سیکنڈز سے کیسے مختلف ہے؟

Unix Timestamp 1970-01-01 UTC سے سیکنڈز (عدد صحیح) ہے۔ Java Timestamp ملی سیکنڈز استعمال کرتا ہے — وہی آفسیٹ لیکن 1000 گنا زیادہ درست۔ تبدیلی کے لیے: ملی سیکنڈز کو 1000 سے تقسیم کریں۔ JSON API اکثر سیکنڈز (Unix Timestamp) استعمال کرتی ہیں، جبکہ Android پلیٹ فارم ملی سیکنڈز (System.currentTimeMillis) استعمال کرتا ہے۔

خلاصہ

  • Unix Timestamp — یکم جنوری 1970 UTC سے سیکنڈز کی تعداد پر مبنی ایک عالمگیر عددی وقت کا فارمیٹ
  • ٹائم زون آزادی — timestamp ہمیشہ UTC میں ہوتا ہے، مقامی وقت میں تبدیلی کلائنٹ کی طرف سے کی جاتی ہے، جو ٹائم زون سے متعلق خرابیوں کی ایک کلاس کو ختم کرتی ہے
  • تبدیلی — Android میں Instant.ofEpochSecond (API 26+) یا پرانے پلیٹ فارم ورژنز کے لیے 1000 سے ضرب کے ساتھ Date استعمال کریں
  • 2038 کا مسئلہ — 32 بٹ time_t کی حد؛ حل 64 بٹ Long میں ذخیرہ اور جدید Android ورژنز (API 21+) کا استعمال
  • ڈیٹا بیس ذخیرہ — SQLite/Room میں INTEGER کے طور پر timestamp سائز، ترتیب کی رفتار اور انڈیکسنگ میں ISO 8601 سٹرنگز سے زیادہ موثر ہے
  • وقت کی پیمائش کے لیے — وقفوں کے لیے System.nanoTime()، وقت کے نشانات کے لیے System.currentTimeMillis() استعمال کریں (صارف کی ایڈجسٹمنٹ کو مدنظر رکھتے ہوئے)
  • سرور معاہدہ — تبدیلی کی غلطیوں سے بچنے کے لیے API دستاویزات میں ہمیشہ پیمائش کی اکائیاں (سیکنڈز یا ملی سیکنڈز) واضح کریں

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں