سوال بابت ایکسل میں‌ہجری تاریخ کافارمولہ

ذیشان حیدر

محفلین
السلام علیکم!
بندہ اس بات کو لے کر بہت پریشان ہے کہ میں ایکسل میں ایک سیل میں‌‌ہجری میں‌تاریخ پیدائش لکھوں تو وہ دوسرے سیل میں‌عیسوی میں‌میری تاریخ پیدائش شو کرے اس بارے میں مجھے فارمولہ چاہیے اگر کسی صاحب/صاحبہ کو یہ فارمولہ آتا ہو تو مطلع فرمائیں۔ بندہ شکر گزار رہے گا اور دُعا دے گا۔ انشااللہ تعالیٰ
 

مغزل

محفلین
ایک فارمولا تھا میرے پاس کوشش کر کے دیکھ لیں :
Create a custom number format.
On the Format menu, click Cells, and then click the Number tab.

Select Custom from the list of number categories.

Select a number format code as a starting point for your date format.

In they Type box, do one of the following:

To display dates using the Gregorian (Gregorian calendar: The calendar in general use in Western countries. It was introduced in 1582 A.D. as a revision to the Julian calendar.) calendar, regardless of the Regional Options or Regional Settings of the Microsoft Windows Control Panel setting, type B1 before the date format code— for example, B1dd/mm/yy.

When Arabic editing is enabled, to display dates using the Hijri (Hijri calendar: The lunar calendar that is used in Islamic regions.) calendar, regardless of the Regional Options or Regional Settings setting, type B2 before the date format code— for example, B2dd/mm/yy.
Note It is also possible to format the date by changing the locale selected in the Locale (location) box for the Date category on the Number tab and then selecting a date format in the Type box.
Enter a date in a cell and have Excel interpret it as a Hijri date instead of Gregorian.

Type A or a in front of the date entry— for example, enter the short date 'a9/25/20', which will be interpreted as Hijri date 9/25/1420 (this is Gregorian date 1/1/2000). If the cell is unformatted, it will be assigned the number format 'B2m/d/yyyy' and the value will be displayed as 9/25/1420.​

ایک لنک یہ دیکھ لیں :
 

اسد

محفلین
ایکسل کا فورمولا تو نہیں معلوم۔
یہ صفحہ (http://www.oriold.uzh.ch/static/hegira.html) دیکھ لیں، اس میں جاواسکرپٹ کوڈ موجود ہے۔ شاید اس سے کچھ معلوم ہو سکے۔

م۔م۔مغل صاحب، میں سمجھ نہیں سکا کہ آپ کا بتایا ہوا طریقہ آج کی عیسوی تاریخ (10/2/2009) کو ھجری تاریخ(14/2/1430) میں کیسے تبدیل کرے گا۔ اگر ہو سکے تو سیل نمبر کے ساتھ وضاحت کر دیں۔ شکریہ۔
 
خوب جناب

شکریہ اسد صاحب میں بھی کسی ایسے ہی کوڈ کی تلاش میں سرگرداں تھا۔ میں نے اس کو آج کی تاریخ دی تو اس نے ہجری کی بالکل صحیح تاریخ 14 صفر 1430 بتائی۔

کوڈ حسبِ ذیل ہے، اس کو مشرف بہ VBA کرنا پڑےگا اگر ایکسل میں استعمال کرنا چاہیں:

کوڈ:
< SCRIPT LANGUAGE = "JavaScript" >

function intPart(floatNum)
{
  if (floatNum < -0.0000001)
  {
    return Math.ceil(floatNum -0.0000001);
  }

  return Math.floor(floatNum + 0.0000001);
}

function weekDay(wdn)
{
  if (wdn == 0)
  {
    return "Monday";
  }

  if (wdn == 1)
  {
    return "Tuesday";
  }

  if (wdn == 2)
  {
    return "Wednesday";
  }

  if (wdn == 3)
  {
    return "Thursday";
  }

  if (wdn == 4)
  {
    return "Friday";
  }

  if (wdn == 5)
  {
    return "Saturday";
  }

  if (wdn == 6)
  {
    return "Sunday";
  }

  return "";

}

function chrToIsl(arg)
{
  d = parseInt(arg.CDay.value);
  m = parseInt(arg.CMonth.value);
  y = parseInt(arg.CYear.value);

  if ((y > 1582) || ((y == 1582) && (m > 10)) || ((y == 1582) && (m == 10) && (d > 14)))
  {
    jd = intPart((1461 * (y + 4800 + intPart((m - 14) / 12))) / 4) + intPart((367 * (m - 2 - 12 * (intPart((m - 14) / 12)))) / 12) -
         intPart((3 * (intPart((y + 4900 +    intPart((m - 14) / 12)) / 100))) / 4) + d - 32075;
  }
  else
  {
    jd = 367 * y - intPart((7 * (y + 5001 + intPart((m - 9) / 7))) / 4) + intPart((275 * m) / 9) + d + 1729777;
  }

  arg.JD.value = jd;
  arg.wd.value = weekDay(jd % 7);
  l = jd - 1948440 + 10632;
  n = intPart((l - 1) / 10631);
  l = l - 10631 * n + 354;
  j = (intPart((10985 - l) / 5316)) * (intPart((50 * l) / 17719)) + (intPart(l / 5670)) * (intPart((43 * l) / 15238));
  l = l - (intPart((30 - j) / 15)) * (intPart((17719 * j) / 50)) - (intPart(j / 16)) * (intPart((15238 * j) / 43)) + 29;
  m = intPart((24 * l) / 709);
  d = l - intPart((709 * m) / 24);
  y = 30 * n + j - 30;

  arg.HDay.value = d;
  arg.HMonth.value = m;
  arg.HYear.value = y;
}

function islToChr(arg)
{
  d = parseInt(arg.HDay.value);
  m = parseInt(arg.HMonth.value);
  y = parseInt(arg.HYear.value);
  jd = intPart((11 * y + 3) / 30) + 354 * y + 30 * m - intPart((m - 1) / 2) + d + 1948440 - 385;
  arg.JD.value = jd;
  arg.wd.value = weekDay(jd % 7);

  if (jd > 2299160)
  {
    l = jd + 68569;
    n = intPart((4 * l) / 146097);
    l = l - intPart((146097 * n + 3) / 4);
    i = intPart((4000 * (l + 1)) / 1461001);
    l = l - intPart((1461 * i) / 4) + 31;
    j = intPart((80 * l) / 2447);
    d = l - intPart((2447 * j) / 80);
    l = intPart(j / 11);
    m = j + 2 - 12 * l;
    y = 100 * (n - 49) + i + l;
  }
  else
  {
    j = jd + 1402;
    k = intPart((j - 1) / 1461);
    l = j - 1461 * k;
    n = intPart((l - 1) / 365) - intPart(l / 1461);
    i = l - 365 * n + 30;
    j = intPart((80 * i) / 2447);
    d = i - intPart((2447 * j) / 80);
    i = intPart(j / 11);
    m = j + 2 - 12 * i;
    y = 4 * k + n + i - 4716;
  }

  arg.CDay.value = d;
  arg.CMonth.value = m;
  arg.CYear.value = y;

}

< / SCRIPT >
 

ذیشان حیدر

محفلین
محترم صاحبان ۔۔۔۔۔۔۔السلام علیکم!
مستقیم بھائی اس کو ایک ایکسل ٹیٹوریل کی شکل میں اردو میں‌سمجھا دیں تو زیادہ آسان ہو جائے گا اور تجربہ بھی ہو جائے گا۔
 

مغزل

محفلین
شکریہ اسد صاحب میں بھی کسی ایسے ہی کوڈ کی تلاش میں سرگرداں تھا۔ میں نے اس کو آج کی تاریخ دی تو اس نے ہجری کی بالکل صحیح تاریخ 14 صفر 1430 بتائی۔

کوڈ حسبِ ذیل ہے، اس کو مشرف بہ Vba کرنا پڑےگا اگر ایکسل میں استعمال کرنا چاہیں:

کوڈ:
< Script Language = "javascript" >

Function Intpart(floatnum)
{
  If (floatnum < -0.0000001)
  {
    Return Math.ceil(floatnum -0.0000001);
  }

  Return Math.floor(floatnum + 0.0000001);
}

Function Weekday(wdn)
{
  If (wdn == 0)
  {
    Return "monday";
  }

  If (wdn == 1)
  {
    Return "tuesday";
  }

  If (wdn == 2)
  {
    Return "wednesday";
  }

  If (wdn == 3)
  {
    Return "thursday";
  }

  If (wdn == 4)
  {
    Return "friday";
  }

  If (wdn == 5)
  {
    Return "saturday";
  }

  If (wdn == 6)
  {
    Return "sunday";
  }

  Return "";

}

Function Chrtoisl(arg)
{
  D = Parseint(arg.cday.value);
  M = Parseint(arg.cmonth.value);
  Y = Parseint(arg.cyear.value);

  If ((y > 1582) || ((y == 1582) && (m > 10)) || ((y == 1582) && (m == 10) && (d > 14)))
  {
    Jd = Intpart((1461 * (y + 4800 + Intpart((m - 14) / 12))) / 4) + Intpart((367 * (m - 2 - 12 * (intpart((m - 14) / 12)))) / 12) -
         Intpart((3 * (intpart((y + 4900 +    Intpart((m - 14) / 12)) / 100))) / 4) + D - 32075;
  }
  Else
  {
    Jd = 367 * Y - Intpart((7 * (y + 5001 + Intpart((m - 9) / 7))) / 4) + Intpart((275 * M) / 9) + D + 1729777;
  }

  Arg.jd.value = Jd;
  Arg.wd.value = Weekday(jd % 7);
  L = Jd - 1948440 + 10632;
  N = Intpart((l - 1) / 10631);
  L = L - 10631 * N + 354;
  J = (intpart((10985 - L) / 5316)) * (intpart((50 * L) / 17719)) + (intpart(l / 5670)) * (intpart((43 * L) / 15238));
  L = L - (intpart((30 - J) / 15)) * (intpart((17719 * J) / 50)) - (intpart(j / 16)) * (intpart((15238 * J) / 43)) + 29;
  M = Intpart((24 * L) / 709);
  D = L - Intpart((709 * M) / 24);
  Y = 30 * N + J - 30;

  Arg.hday.value = D;
  Arg.hmonth.value = M;
  Arg.hyear.value = Y;
}

Function Isltochr(arg)
{
  D = Parseint(arg.hday.value);
  M = Parseint(arg.hmonth.value);
  Y = Parseint(arg.hyear.value);
  Jd = Intpart((11 * Y + 3) / 30) + 354 * Y + 30 * M - Intpart((m - 1) / 2) + D + 1948440 - 385;
  Arg.jd.value = Jd;
  Arg.wd.value = Weekday(jd % 7);

  If (jd > 2299160)
  {
    L = Jd + 68569;
    N = Intpart((4 * L) / 146097);
    L = L - Intpart((146097 * N + 3) / 4);
    I = Intpart((4000 * (l + 1)) / 1461001);
    L = L - Intpart((1461 * I) / 4) + 31;
    J = Intpart((80 * L) / 2447);
    D = L - Intpart((2447 * J) / 80);
    L = Intpart(j / 11);
    M = J + 2 - 12 * L;
    Y = 100 * (n - 49) + I + L;
  }
  Else
  {
    J = Jd + 1402;
    K = Intpart((j - 1) / 1461);
    L = J - 1461 * K;
    N = Intpart((l - 1) / 365) - Intpart(l / 1461);
    I = L - 365 * N + 30;
    J = Intpart((80 * I) / 2447);
    D = I - Intpart((2447 * J) / 80);
    I = Intpart(j / 11);
    M = J + 2 - 12 * I;
    Y = 4 * K + N + I - 4716;
  }

  Arg.cday.value = D;
  Arg.cmonth.value = M;
  Arg.cyear.value = Y;

}

< / Script >

بہت شکریہ شارق مستقیم صاحب
 
ایک خانے (cell) میں عیسوی تاریخ

یہ لیجیے جناب،

www.boriat.com/test/Greg to Hijri Converter.zip

فائل کو کھولیے، طریقہ کار آسان ہے، ایک خانے (cell) میں عیسوی تاریخ لکھیے تو دوسرے خانے میں ہجری تاریخ مل جائے گی۔
Alt+F11 کنجی دبا کر کوڈ دیکھ سکتے ہیں۔

نوٹ: فائل کھولتے ہوئے میکرو کوچالو کرنا پڑے گا۔
 

اسد

محفلین
اوپر مغل صاحب نے جو طریقہ بتایا ہے وہ عیسوی تاریخ کو ھجری میں تبدیل کر دیتا ہے (وہ بھی شاید صرف سن 1900 کے بعد کی تاریخیں) لیکن ھجری کو عیسوی میں نہیں۔ غالباً اس کے لئے عربی آفس کی ضرورت ہو گی۔

خیال رہے کہ تبدیلی کے یہ تمام طریقے ریاضی کے اصولوں پر مبنی ہیں اور ہماری مشہور کمیٹی کا اصولوں سے کوئی تعلق نہیں ہے۔ اس لئے ایک دن کا فرق آ سکتا ہے۔
 
Top