Whiz Tools

یونکس ٹائم اسٹیمپ کنورٹر

ইউনিক্স টাইমস্ট্যাম্প হল 1 জানুয়ারী, 1970 (UTC) থেকে পেরিয়ে যাওয়া সেকেন্ডের সংখ্যা

تبدیل شدہ تاریخ اور وقت

یونکس ٹائم اسٹیمپ کنورٹر

تعارف

یونکس ٹائم اسٹیمپ (جسے POSIX وقت یا ایپوک وقت بھی کہا جاتا ہے) وقت کے ایک نقطے کی وضاحت کرنے کے لیے ایک نظام ہے۔ یہ 1 جنوری 1970 (آدھی رات UTC/GMT) کے بعد گزرے ہوئے سیکنڈز کی تعداد ہے، چھلانگ کے سیکنڈز کو شمار کیے بغیر۔ یونکس ٹائم اسٹیمپ کمپیوٹر سسٹمز اور پروگرامنگ زبانوں میں بڑے پیمانے پر استعمال ہوتے ہیں کیونکہ یہ مخصوص لمحے کی ایک جامع، زبان سے آزاد نمائندگی فراہم کرتے ہیں۔

یہ کنورٹر آپ کو ایک یونکس ٹائم اسٹیمپ کو انسانی پڑھنے کے قابل تاریخ اور وقت کی شکل میں تبدیل کرنے کی اجازت دیتا ہے۔ یہ مختلف علاقائی اور ذاتی ترجیحات کو پورا کرنے کے لیے 12 گھنٹے (AM/PM) اور 24 گھنٹے کے وقت کے دونوں فارمیٹس کی حمایت کرتا ہے۔

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

یونکس ٹائم اسٹیمپ یونکس ایپوک (1 جنوری 1970، 00:00:00 UTC) کے بعد گزرے ہوئے سیکنڈز کی تعداد کے طور پر شمار کیا جاتا ہے۔ یہ انہیں وقت کے فرق کا حساب لگانے اور تاریخوں کو ایک جامع شکل میں ذخیرہ کرنے کے لیے خاص طور پر مفید بناتا ہے۔

یونکس ٹائم اسٹیمپ سے کیلنڈر کی تاریخ میں تبدیلی کے لیے ریاضیاتی تبدیلی میں کئی مراحل شامل ہیں:

  1. یونکس ایپوک (1 جنوری 1970، 00:00:00 UTC) کے ساتھ شروع کریں
  2. ٹائم اسٹیمپ میں سیکنڈز کی تعداد شامل کریں
  3. چھلانگ کے سال، مختلف مہینوں کی لمبائی، اور دیگر کیلنڈر کی پیچیدگیوں کا حساب لگائیں
  4. اگر ضرورت ہو تو ٹائم زون کی ایڈجسٹمنٹ کریں

مثال کے طور پر، یونکس ٹائم اسٹیمپ 1609459200 جمعہ، 1 جنوری 2021، 00:00:00 UTC کی نمائندگی کرتا ہے۔

تبدیلی کا فارمولا اس طرح بیان کیا جا سکتا ہے:

تاریخ=یونکس ایپوک+ٹائم اسٹیمپ (سیکنڈز میں)\text{تاریخ} = \text{یونکس ایپوک} + \text{ٹائم اسٹیمپ (سیکنڈز میں)}

زیادہ تر پروگرامنگ زبانیں اور آپریٹنگ سسٹمز اس تبدیلی کو سنبھالنے کے لیے بلٹ ان فنکشنز فراہم کرتے ہیں، جو پیچیدہ کیلنڈر کی حسابات کو چھپاتے ہیں۔

وقت کے فارمیٹ کے اختیارات

یہ کنورٹر دو وقت کے فارمیٹ کے اختیارات پیش کرتا ہے:

  1. 24 گھنٹے کا فارمیٹ (جسے کبھی کبھار "فوجی وقت" بھی کہا جاتا ہے): گھنٹے 0 سے 23 تک ہوتے ہیں، اور AM/PM کی کوئی وضاحت نہیں ہوتی۔ مثال کے طور پر، 3:00 PM کو 15:00 کے طور پر ظاہر کیا جاتا ہے۔

  2. 12 گھنٹے کا فارمیٹ: گھنٹے 1 سے 12 تک ہوتے ہیں، آدھی رات سے دوپہر تک کے لیے AM (ante meridiem) اور دوپہر سے آدھی رات تک کے لیے PM (post meridiem) ہوتا ہے۔ مثال کے طور پر، 24 گھنٹے کے فارمیٹ میں 15:00 کو 3:00 PM کے طور پر ظاہر کیا جاتا ہے۔

ان فارمیٹس کے درمیان انتخاب بنیادی طور پر علاقائی روایات اور ذاتی ترجیحات کا معاملہ ہے:

  • 24 گھنٹے کا فارمیٹ زیادہ تر یورپ، لاطینی امریکہ، اور ایشیا میں استعمال ہوتا ہے، نیز دنیا بھر میں سائنسی، فوجی، اور طبی سیاق و سباق میں۔
  • 12 گھنٹے کا فارمیٹ روزمرہ کے استعمال کے لیے امریکہ، کینیڈا، آسٹریلیا، اور کچھ دیگر انگریزی بولنے والے ممالک میں عام ہے۔

کنارے کے کیسز اور حدود

یونکس ٹائم اسٹیمپس کے ساتھ کام کرتے وقت، کئی کنارے کے کیسز اور حدود سے آگاہ ہونا ضروری ہے:

  1. منفی ٹائم اسٹیمپس: یہ 1 جنوری 1970 سے پہلے کی تاریخوں کی نمائندگی کرتے ہیں۔ اگرچہ ریاضی کے لحاظ سے درست ہیں، لیکن کچھ سسٹمز منفی ٹائم اسٹیمپس کو صحیح طریقے سے سنبھال نہیں سکتے۔

  2. سال 2038 کا مسئلہ: یونکس ٹائم اسٹیمپس اکثر 32 بٹ سائنڈ انٹیجرز کے طور پر ذخیرہ کیے جاتے ہیں، جو 19 جنوری 2038 کو اوور فلو ہو جائیں گے۔ اس کے بعد، 32 بٹ سسٹمز صحیح طریقے سے اوقات کی نمائندگی کرنے میں ناکام رہیں گے جب تک کہ انہیں بڑے انٹیجر کی قسم استعمال کرنے کے لیے تبدیل نہ کیا جائے۔

  3. انتہائی بڑے ٹائم اسٹیمپس: بہت دور کی مستقبل کی تاریخیں بعض سسٹمز میں نمائندگی نہیں کی جا سکتیں، یا غیر متوازن طریقے سے سنبھالی جا سکتی ہیں۔

  4. چھلانگ کے سیکنڈ: یونکس وقت چھلانگ کے سیکنڈز کا حساب نہیں رکھتا، جو کبھی کبھار UTC میں زمین کی غیر باقاعدہ گردش کے لیے شامل کیے جاتے ہیں۔ اس کا مطلب ہے کہ یونکس وقت فلکیاتی وقت کے ساتھ درست طور پر ہم آہنگ نہیں ہے۔

  5. ٹائم زون کی غور و فکر: یونکس ٹائم اسٹیمپس لمحات کو UTC میں ظاہر کرتے ہیں۔ مقامی وقت میں تبدیل کرنے کے لیے اضافی ٹائم زون کی معلومات کی ضرورت ہوتی ہے۔

  6. دن کی بچت کا وقت: ٹائم اسٹیمپس کو مقامی وقت میں تبدیل کرتے وقت، دن کی بچت کے وقت کی تبدیلیوں کی پیچیدگیوں پر غور کرنا ضروری ہے۔

استعمال کے کیسز

یونکس ٹائم اسٹیمپس کمپیوٹنگ اور ڈیٹا انتظامیہ میں متعدد ایپلی کیشنز میں استعمال ہوتے ہیں:

  1. ڈیٹا بیس ریکارڈ: ٹائم اسٹیمپس عام طور پر یہ ریکارڈ کرنے کے لیے استعمال ہوتے ہیں کہ اندراجات کب بنائے گئے یا ترمیم کیے گئے۔

  2. ویب ڈویلپمنٹ: HTTP ہیڈرز، کوکیز، اور کیشنگ کے طریقہ کار اکثر یونکس ٹائم اسٹیمپس کا استعمال کرتے ہیں۔

  3. لاگ فائلیں: سسٹم لاگ عام طور پر واقعات کو درست ترتیب میں ریکارڈ کرنے کے لیے یونکس ٹائم اسٹیمپس کے ساتھ ریکارڈ کرتے ہیں۔

  4. ورژن کنٹرول سسٹمز: Git اور دیگر VCS ٹائم اسٹیمپس کا استعمال کرتے ہیں تاکہ یہ ریکارڈ کیا جا سکے کہ کمیٹس کب کی گئیں۔

  5. API جوابات: بہت سے ویب APIs اپنے جوابات میں ٹائم اسٹیمپس شامل کرتے ہیں تاکہ یہ اشارہ کیا جا سکے کہ ڈیٹا کب تیار کیا گیا یا وسائل کب آخری بار ترمیم کیے گئے۔

  6. فائل کے نظام: فائل کی تخلیق اور ترمیم کے اوقات اکثر یونکس ٹائم اسٹیمپس کے طور پر ذخیرہ کیے جاتے ہیں۔

  7. سیشن کی انتظامیہ: ویب ایپلیکیشنز ٹائم اسٹیمپس کا استعمال کرتی ہیں تاکہ یہ طے کیا جا سکے کہ صارف کے سیشن کب ختم ہونے چاہئیں۔

  8. ڈیٹا تجزیہ: ٹائم اسٹیمپس تجزیاتی ایپلیکیشنز میں وقتی ڈیٹا کے ساتھ کام کرنے کے لیے ایک معیاری طریقہ فراہم کرتے ہیں۔

متبادل

اگرچہ یونکس ٹائم اسٹیمپس بڑے پیمانے پر استعمال ہوتے ہیں، لیکن کچھ سیاق و سباق میں زیادہ موزوں وقت کی نمائندگی کی شکلیں ہیں:

  1. ISO 8601: ایک معیاری سٹرنگ فارمیٹ (جیسے "2021-01-01T00:00:00Z") جو انسانی پڑھنے کے قابل ہے جبکہ ترتیب دینے کی صلاحیت کو برقرار رکھتا ہے۔ یہ ڈیٹا کے تبادلے اور صارف کے سامنے آنے والی ایپلی کیشنز کے لیے اکثر ترجیح دی جاتی ہے۔

  2. RFC 3339: انٹرنیٹ پروٹوکول میں استعمال ہونے والا ISO 8601 کا ایک پروفائل، جس میں سخت فارمیٹنگ کی ضروریات ہیں۔

  3. انسانی پڑھنے کے قابل فارمیٹس: مقامی تاریخ کی تاریں (جیسے "1 جنوری 2021") براہ راست صارف کے تعامل کے لیے زیادہ موزوں ہیں لیکن حساب کتاب کے لیے کم موزوں ہیں۔

  4. مائیکروسافٹ FILETIME: ایک 64 بٹ قیمت جو 1601-01-01 کے بعد 100 نانو سیکنڈ کے وقفوں کی تعداد کی نمائندگی کرتی ہے، جو ونڈوز سسٹمز میں استعمال ہوتی ہے۔

  5. جولین دن کا نمبر: فلکیات اور کچھ سائنسی ایپلی کیشنز میں استعمال ہوتا ہے، جو 4713 قبل مسیح سے دنوں کی گنتی کرتا ہے۔

وقت کے فارمیٹ کا انتخاب عوامل جیسے:

  • درکار درستگی
  • انسانی پڑھنے کی ضروریات
  • ذخیرہ کرنے کی حدود
  • موجودہ سسٹمز کے ساتھ ہم آہنگی
  • تاریخوں کی رینج جس کی نمائندگی کی ضرورت ہے

تاریخ

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

اصل نفاذ نے سیکنڈز کی تعداد کو ذخیرہ کرنے کے لیے 32 بٹ سائنڈ انٹیجر کا استعمال کیا، جو اس وقت یونکس سسٹمز کی متوقع عمر کے لیے کافی تھا۔ تاہم، اس فیصلے نے سال 2038 کے مسئلے (کبھی کبھار "Y2K38" یا "یونکس صدی کا بگ" کہا جاتا ہے) کی وجہ بنی، کیونکہ 32 بٹ سائنڈ انٹیجرز صرف 1 جنوری 2038 (03:14:07 UTC) تک کی تاریخوں کی نمائندگی کر سکتے ہیں۔

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

جدید سسٹمز میں بڑھتی ہوئی تعداد میں 64 بٹ انٹیجرز کو ٹائم اسٹیمپس کے لیے استعمال کیا جاتا ہے، جو ایپوک سے تقریباً 292 ارب سالوں کی نمائندگی کی حد کو بڑھاتا ہے، جس سے سال 2038 کے مسئلے کو مؤثر طریقے سے حل کیا جا رہا ہے۔ تاہم، وراثتی سسٹمز اور ایپلی کیشنز اب بھی خطرے میں ہو سکتی ہیں۔

یونکس ٹائم اسٹیمپ کی سادگی اور افادیت نے اس کی موجودگی کو یقینی بنایا ہے، حالانکہ زیادہ ترقی یافتہ وقت کی نمائندگی کی شکلیں تیار کی گئی ہیں۔ یہ کمپیوٹنگ میں ایک بنیادی تصور کے طور پر جاری رہتا ہے، ہمارے ڈیجیٹل انفراسٹرکچر کی بہت سی بنیادوں کو سہارا دیتا ہے۔

کوڈ کے نمونے

یہاں مختلف پروگرامنگ زبانوں میں یونکس ٹائم اسٹیمپس کو انسانی پڑھنے کے قابل تاریخوں میں تبدیل کرنے کے طریقے کے نمونے ہیں:

// جاوا اسکرپٹ ٹائم اسٹیمپ تبدیلی
function convertUnixTimestamp(timestamp, use12Hour = false) {
  // ایک نئی تاریخ کی شے بنائیں (جاوا اسکرپٹ ملی سیکنڈز کا استعمال کرتا ہے)
  const date = new Date(timestamp * 1000);
  
  // فارمیٹ کے اختیارات
  const options = {
    year: 'numeric',
    month: 'long',
    day: 'numeric',
    weekday: 'long',
    hour: use12Hour ? 'numeric' : '2-digit',
    minute: '2-digit',
    second: '2-digit',
    hour12: use12Hour
  };
  
  // مقامی فارمیٹنگ کا استعمال کرتے ہوئے سٹرنگ میں تبدیل کریں
  return date.toLocaleString(undefined, options);
}

// مثال کا استعمال
const timestamp = 1609459200; // 1 جنوری 2021 00:00:00 UTC
console.log(convertUnixTimestamp(timestamp, false)); // 24 گھنٹے کا فارمیٹ
console.log(convertUnixTimestamp(timestamp, true));  // 12 گھنٹے کا فارمیٹ
# پائتھن ٹائم اسٹیمپ تبدیلی
import datetime

def convert_unix_timestamp(timestamp, use_12hour=False):
    # یونکس ٹائم اسٹیمپ کو تاریخ کی شے میں تبدیل کریں
    date = datetime.datetime.fromtimestamp(timestamp)
    
    # تاریخ کی سٹرنگ کا فارمیٹ
    if use_12hour:
        format_string = "%A, %B %d, %Y %I:%M:%S %p"  # 12 گھنٹے کا فارمیٹ AM/PM کے ساتھ
    else:
        format_string = "%A, %B %d, %Y %H:%M:%S"     # 24 گھنٹے کا فارمیٹ
    
    return date.strftime(format_string)

# مثال کا استعمال
timestamp = 1609459200  # 1 جنوری 2021 00:00:00 UTC
print(convert_unix_timestamp(timestamp, False))  # 24 گھنٹے کا فارمیٹ
print(convert_unix_timestamp(timestamp, True))   # 12 گھنٹے کا فارمیٹ
<?php
// پی ایچ پی ٹائم اسٹیمپ تبدیلی
function convertUnixTimestamp($timestamp, $use12Hour = false) {
    // فارمیٹ کی سٹرنگ
    $formatString = $use12Hour 
        ? 'l, F j, Y g:i:s A'  // 12 گھنٹے کا فارمیٹ AM/PM کے ساتھ
        : 'l, F j, Y H:i:s';   // 24 گھنٹے کا فارمیٹ
    
    // تاریخ کو تبدیل اور فارمیٹ کریں
    return date($formatString, $timestamp);
}

// مثال کا استعمال
$timestamp = 1609459200; // 1 جنوری 2021 00:00:00 UTC
echo convertUnixTimestamp($timestamp, false) . "\n"; // 24 گھنٹے کا فارمیٹ
echo convertUnixTimestamp($timestamp, true) . "\n";  // 12 گھنٹے کا فارمیٹ
?>
// جاوا ٹائم اسٹیمپ تبدیلی
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

public class UnixTimestampConverter {
    public static String convertUnixTimestamp(long timestamp, boolean use12Hour) {
        // یونکس ٹائم اسٹیمپ کو انسٹنٹ میں تبدیل کریں، پھر لوکل ڈیٹ ٹائم میں
        Instant instant = Instant.ofEpochSecond(timestamp);
        LocalDateTime dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
        
        // مطلوبہ فارمیٹ کے مطابق فارمیٹر بنائیں
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
            use12Hour ? "EEEE, MMMM d, yyyy h:mm:ss a" : "EEEE, MMMM d, yyyy HH:mm:ss"
        );
        
        // تاریخ کو فارمیٹ کریں
        return dateTime.format(formatter);
    }
    
    public static void main(String[] args) {
        long timestamp = 1609459200; // 1 جنوری 2021 00:00:00 UTC
        System.out.println(convertUnixTimestamp(timestamp, false)); // 24 گھنٹے کا فارمیٹ
        System.out.println(convertUnixTimestamp(timestamp, true));  // 12 گھنٹے کا فارمیٹ
    }
}
// سی# ٹائم اسٹیمپ تبدیلی
using System;

class UnixTimestampConverter
{
    public static string ConvertUnixTimestamp(long timestamp, bool use12Hour)
    {
        // یونکس ٹائم اسٹیمپ کو تاریخ اور وقت میں تبدیل کریں
        // یونکس ٹائم اسٹیمپ 1970-01-01 کے بعد سیکنڈز ہیں
        DateTime dateTime = DateTimeOffset.FromUnixTimeSeconds(timestamp).DateTime;
        
        // 12 گھنٹے یا 24 گھنٹے کی ترجیحات کے مطابق فارمیٹ کی سٹرنگ
        string formatString = use12Hour 
            ? "dddd, MMMM d, yyyy h:mm:ss tt"  // 12 گھنٹے کا فارمیٹ AM/PM کے ساتھ
            : "dddd, MMMM d, yyyy HH:mm:ss";   // 24 گھنٹے کا فارمیٹ
        
        // فارمیٹ کردہ تاریخ کی سٹرنگ واپس کریں
        return dateTime.ToString(formatString);
    }
    
    static void Main()
    {
        long timestamp = 1609459200; // 1 جنوری 2021 00:00:00 UTC
        Console.WriteLine(ConvertUnixTimestamp(timestamp, false)); // 24 گھنٹے کا فارمیٹ
        Console.WriteLine(ConvertUnixTimestamp(timestamp, true));  // 12 گھنٹے کا فارمیٹ
    }
}
# روبی ٹائم اسٹیمپ تبدیلی
require 'time'

def convert_unix_timestamp(timestamp, use_12hour = false)
  # یونکس ٹائم اسٹیمپ کو وقت کی شے میں تبدیل کریں
  time = Time.at(timestamp)
  
  # 12 گھنٹے یا 24 گھنٹے کی ترجیحات کے مطابق فارمیٹ
  if use_12hour
    time.strftime("%A, %B %d, %Y %I:%M:%S %p")  # 12 گھنٹے کا فارمیٹ AM/PM کے ساتھ
  else
    time.strftime("%A, %B %d, %Y %H:%M:%S")     # 24 گھنٹے کا فارمیٹ
  end
end

# مثال کا استعمال
timestamp = 1609459200  # 1 جنوری 2021 00:00:00 UTC
puts convert_unix_timestamp(timestamp, false)  # 24 گھنٹے کا فارمیٹ
puts convert_unix_timestamp(timestamp, true)   # 12 گھنٹے کا فارمیٹ
// گو ٹائم اسٹیمپ تبدیلی
package main

import (
    "fmt"
    "time"
)

func convertUnixTimestamp(timestamp int64, use12Hour bool) string {
    // یونکس ٹائم اسٹیمپ کو وقت میں تبدیل کریں
    t := time.Unix(timestamp, 0)
    
    // 12 گھنٹے یا 24 گھنٹے کی ترجیحات کے مطابق فارمیٹ کی سٹرنگ
    formatString := "Monday, January 2, 2006 "
    if use12Hour {
        formatString += "3:04:05 PM"  // 12 گھنٹے کا فارمیٹ AM/PM کے ساتھ
    } else {
        formatString += "15:04:05"    // 24 گھنٹے کا فارمیٹ
    }
    
    // فارمیٹ کردہ وقت واپس کریں
    return t.Format(formatString)
}

func main() {
    timestamp := int64(1609459200) // 1 جنوری 2021 00:00:00 UTC
    fmt.Println(convertUnixTimestamp(timestamp, false)) // 24 گھنٹے کا فارمیٹ
    fmt.Println(convertUnixTimestamp(timestamp, true))  // 12 گھنٹے کا فارمیٹ
}
// سوئفٹ ٹائم اسٹیمپ تبدیلی
import Foundation

func convertUnixTimestamp(_ timestamp: Int, use12Hour: Bool) -> String {
    // یونکس ٹائم اسٹیمپ سے تاریخ بنائیں
    let date = Date(timeIntervalSince1970: TimeInterval(timestamp))
    
    // تاریخ کے فارمیٹر بنائیں
    let formatter = DateFormatter()
    formatter.dateStyle = .full
    
    // 12 گھنٹے یا 24 گھنٹے کی ترجیحات کے مطابق وقت کا اندازہ لگائیں
    if use12Hour {
        formatter.timeStyle = .medium
        formatter.amSymbol = "AM"
        formatter.pmSymbol = "PM"
    } else {
        formatter.timeStyle = .medium
        formatter.dateFormat = formatter.dateFormat?.replacingOccurrences(of: "h:mm:ss a", with: "HH:mm:ss")
    }
    
    // فارمیٹ کردہ تاریخ واپس کریں
    return formatter.string(from: date)
}

// مثال کا استعمال
let timestamp = 1609459200 // 1 جنوری 2021 00:00:00 UTC
print(convertUnixTimestamp(timestamp, use12Hour: false)) // 24 گھنٹے کا فارمیٹ
print(convertUnixTimestamp(timestamp, use12Hour: true))  // 12 گھنٹے کا فارمیٹ
# آر ٹائم اسٹیمپ تبدیلی
convert_unix_timestamp <- function(timestamp, use_12hour = FALSE) {
  # یونکس ٹائم اسٹیمپ کو POSIXct تاریخ اور وقت میں تبدیل کریں
  date_time <- as.POSIXct(timestamp, origin = "1970-01-01", tz = "UTC")
  
  # 12 گھنٹے یا 24 گھنٹے کی ترجیحات کے مطابق فارمیٹ
  if (use_12hour) {
    format_string <- "%A, %B %d, %Y %I:%M:%S %p"  # 12 گھنٹے کا فارمیٹ AM/PM کے ساتھ
  } else {
    format_string <- "%A, %B %d, %Y %H:%M:%S"     # 24 گھنٹے کا فارمیٹ
  }
  
  # فارمیٹ کردہ تاریخ کی سٹرنگ واپس کریں
  format(date_time, format_string)
}

# مثال کا استعمال
timestamp <- 1609459200  # 1 جنوری 2021 00:00:00 UTC
cat(convert_unix_timestamp(timestamp, FALSE), "\n")  # 24 گھنٹے کا فارمیٹ
cat(convert_unix_timestamp(timestamp, TRUE), "\n")   # 12 گھنٹے کا فارمیٹ
% میٹلیب ٹائم اسٹیمپ تبدیلی
function formattedDate = convertUnixTimestamp(timestamp, use12Hour)
    % یونکس ٹائم اسٹیمپ کو میٹلیب تاریخ/وقت میں تبدیل کریں
    % میٹلیب کی تاریخیں 1900-01-01 کے بعد کے دن ہیں، 1 = 1900-01-01
    % یونکس ٹائم اسٹیمپ 1970-01-01 کے بعد سیکنڈز ہیں
    
    % پہلے میٹلیب کی تاریخ کی شکل میں تبدیل کریں
    % 25569 1900-01-01 اور 1970-01-01 کے درمیان دنوں کی تعداد ہے
    excelDate = (timestamp / 86400) + 25569;
    
    % 12 گھنٹے یا 24 گھنٹے کی ترجیحات کے مطابق فارمیٹ کی سٹرنگ
    if use12Hour
        formattedDate = datestr(excelDate, 'dddd, mmmm d, yyyy h:mm:ss AM/PM');
    else
        formattedDate = datestr(excelDate, 'dddd, mmmm d, yyyy hh:mm:ss');
    end
end

% ورکشیٹ میں استعمال:
% =ConvertUnixTimestamp(1609459200, TRUE)  ' 12 گھنٹے کا فارمیٹ
% =ConvertUnixTimestamp(1609459200, FALSE) ' 24 گھنٹے کا فارمیٹ

کنارے کے کیسز کو سنبھالنا

یونکس ٹائم اسٹیمپس کے ساتھ کام کرتے وقت، یہ ضروری ہے کہ کنارے کے کیسز کو درست طریقے سے سنبھالا جائے۔ یہاں کچھ عام کنارے کے کیسز کو سنبھالنے کے طریقے کے نمونے ہیں:

// جاوا اسکرپٹ کنارے کے کیسز کا انتظام
function safeConvertTimestamp(timestamp, use12Hour = false) {
  // چیک کریں کہ آیا ٹائم اسٹیمپ درست ہے
  if (timestamp === undefined || timestamp === null || isNaN(timestamp)) {
    return "غلط ٹائم اسٹیمپ";
  }
  
  // منفی ٹائم اسٹیمپس کے لیے چیک کریں (1970 سے پہلے کی تاریخیں)
  if (timestamp < 0) {
    // کچھ براؤزر منفی ٹائم اسٹیمپس کو صحیح طریقے سے سنبھال نہیں سکتے
    // 1970 سے پہلے کی تاریخوں کے لیے زیادہ مضبوط طریقہ استعمال کریں
    const date = new Date(timestamp * 1000);
    if (isNaN(date.getTime())) {
      return "غلط تاریخ (1970 سے پہلے)";
    }
  }
  
  // Y2K38 مسئلے کے لیے چیک کریں (32 بٹ سسٹمز کے لیے)
  const maxInt32 = 2147483647; // 32 بٹ سائنڈ انٹیجر کی زیادہ سے زیادہ قیمت
  if (timestamp > maxInt32) {
    // جدید جاوا اسکرپٹ میں بہت بڑے ٹائم اسٹیمپس کے لیے BigInt استعمال کرنے پر غور کریں
    console.warn("ٹائم اسٹیمپ 32 بٹ انٹیجر کی حد سے تجاوز کر گیا ہے (Y2K38 مسئلہ)");
  }
  
  // معمول کی تبدیلی کے ساتھ آگے بڑھیں
  try {
    const date = new Date(timestamp * 1000);
    const options = {
      year: 'numeric',
      month: 'long',
      day: 'numeric',
      weekday: 'long',
      hour: use12Hour ? 'numeric' : '2-digit',
      minute: '2-digit',
      second: '2-digit',
      hour12: use12Hour
    };
    return date.toLocaleString(undefined, options);
  } catch (error) {
    return "ٹائم اسٹیمپ کو تبدیل کرنے میں خرابی: " + error.message;
  }
}

حوالہ جات

  1. "یونکس وقت۔" وکیپیڈیا، وکیمیڈیا فاؤنڈیشن، https://en.wikipedia.org/wiki/Unix_time

  2. "سال 2038 کا مسئلہ۔" وکیپیڈیا، وکیمیڈیا فاؤنڈیشن، https://en.wikipedia.org/wiki/Year_2038_problem

  3. اولسن، آرٹھر ڈیوڈ۔ "کیلنڈر کے وقت کی پیچیدگیاں۔" اوپن گروپ، https://www.usenix.org/legacy/events/usenix01/full_papers/olson/olson.pdf

  4. "ISO 8601۔" وکیپیڈیا، وکیمیڈیا فاؤنڈیشن، https://en.wikipedia.org/wiki/ISO_8601

  5. "RFC 3339: انٹرنیٹ پر تاریخ اور وقت: ٹائم اسٹیمپس۔" انٹرنیٹ انجینئرنگ ٹاسک فورس (IETF)، https://tools.ietf.org/html/rfc3339

  6. کرننگھن، برائن و۔، اور ڈینس ایم۔ رچے۔ "سی پروگرامنگ زبان۔" پرینٹیس ہال، 1988۔

Feedback