Jump to content

مساعده كود التاريخ


Glmd

Recommended Posts

function _getRealTime (   ) 
    local time = getRealTime (  ) 
    local mo = time.month+1 
    local md = time.monthday 
    if ( tonumber ( md ) < 10 ) then 
        md = "0"..md 
    end 
    if ( tonumber ( mo ) < 10 ) then 
         mo = "0"..mo 
    end 
  return  md.."/"..mo.."/"..tostring ( tonumber ( time.year + 1900 ) ) 
end 
Link to comment

لو تريد بالهجري فـ الكود بيتعقد اكثر .. الجميع يستخدم الميلأدي

بالنسبة للسطر فـ انا تحققت لو عدد يوم الاسبوع اصغر من 10 .. احط 0 والرقم عشان يجي الصفر واليوم اتمنى فهمت .

Link to comment
لو تريد بالهجري فـ الكود بيتعقد اكثر .. الجميع يستخدم الميلأدي

بالنسبة للسطر فـ انا تحققت لو عدد يوم الاسبوع اصغر من 10 .. احط 0 والرقم عشان يجي الصفر واليوم اتمنى فهمت .

أنا أريد الحصول على التاريخ الهجري، فمن يعرف كيف؟

بالنسبة إلى الصفر لا داعي له الآن.

Link to comment
أتمنى أن تكون الردود للمساعدة وليس لتوضيح شيء معروف!

بالنسبة لكود الصفر بأمكانك اختصاره هكذا:

string.format("%02d", "1") -- 01

مدام شي معروف ما احد بيقدر يساعدكـ .. الكود صعب ومعقد

ثاني شي انت قلت ( اختصارهـ ) تشوف كودي اسهل ولا استخدم الفورمات ! .

ثالث شي نوع الفورمات خطا .

Link to comment
أتمنى أن تكون الردود للمساعدة وليس لتوضيح شيء معروف!

بالنسبة لكود الصفر بأمكانك اختصاره هكذا:

string.format("%02d", "1") -- 01

مدام شي معروف ما احد بيقدر يساعدكـ .. الكود صعب ومعقد

ثاني شي انت قلت ( اختصارهـ ) تشوف كودي اسهل ولا استخدم الفورمات ! .

ثالث شي نوع الفورمات خطا .

اتوقع في سكربتات تاريخ بالانترنت

وهو يسوي موقع مجاني

ويسوي callRemot

تزبط صح ؟

بس معقدة

اما شغل حسابات مستحيلة لانه على ظهور القمر التاريخ الهجري

Link to comment

تفضل ,,

الطريقة مو صحيحة 100 % راح تلاحظ تقدم أو تأخر ف الأيام

setTimer (  
    function (  ) 
        local Day, Month, Year = convertHistoryToHijri (  ); 
        outputChatBox ( Day .. "/" .. Month .. "/" .. Year .. " هـ" ); 
    end 
    , 1000 
    , 1  
); 
  
  
convertHistoryToHijri = function (  ) 
    local Time = getRealTime (  ); 
    local Day = Time.monthday 
    local Month = Time.month + 1 
    local Year = Time.year + 1900 
    -- 
    if Month == 1 then Last = Day end 
    if Month == 2 then Last = Day + 30 end 
    if Month == 3 then Last = Day + 60 end 
    if Month == 4 then Last = Day + 90 end 
    if Month == 5 then Last = Day + 120 end 
    if Month == 6 then Last = Day + 150 end 
    if Month == 7 then Last = Day + 180 end 
    if Month == 8 then Last = Day + 210 end 
    if Month == 9 then Last = Day + 240 end 
    if Month == 10 then Last = Day + 270 end 
    if Month == 11 then Last = Day + 300 end 
    if Month == 12 then Last = Day + 330 end 
    -- 
    x = math.ceil ( ( Year - 1 ) * 365.25 ); 
    x = x + Last  
    x = math.abs ( x - 227015 ); 
    x = math.floor ( x * 30 ); 
    xx = x 
    x = math.floor ( x / 10631 ); 
    m = math.floor ( x * 10631 ); 
    m = math.abs ( m - xx ); 
    x2 = math.floor ( m / 30 ); 
    x2 = math.abs ( x2 - 13 ); 
    -- 
    if x2 >= 1 and x2 <= 30 then x4 = x2 x3 = 1 end 
    if x2 >= 31 and x2 <= 60 then x4 = x2 - 30 x3 = 2 end 
    if x2 >= 61 and x2 <= 90 then x4 = x2 - 60 x3 = 3 end 
    if x2 >= 91 and x2 <= 120 then x4 = x2 - 90 x3 = 4 end 
    if x2 >= 121 and x2 <= 150 then x4 = x2 - 120 x3 = 5 end 
    if x2 >= 151 and x2 <= 180 then x4 = x2 - 150 x3 = 6 end 
    if x2 >= 181 and x2 <= 210 then x4 = x2 - 180 x3 = 7 end 
    if x2 >= 211 and x2 <= 240 then x4 = x2 - 210 x3 = 8 end 
    if x2 >= 241 and x2 <= 270 then x4 = x2 - 240 x3 = 9 end 
    if x2 >= 271 and x2 <= 300 then x4 = x2 - 270 x3 = 10 end 
    if x2 >= 301 and x2 <= 330 then x4 = x2 - 300 x3 = 11 end 
    if x2 >= 331 and x2 <= 360 then x4 = x2 - 330 x3 = 12 end 
    -- 
    return tostring ( x4 ), tostring ( x3 ), tostring ( x + 1 ); 
end 

Link to comment
تفضل ,,

الطريقة مو صحيحة 100 % راح تلاحظ تقدم أو تأخر ف الأيام

setTimer (  
    function (  ) 
        local Day, Month, Year = convertHistoryToHijri (  ); 
        outputChatBox ( Day .. "/" .. Month .. "/" .. Year .. " هـ" ); 
    end 
    , 1000 
    , 1  
); 
  
  
convertHistoryToHijri = function (  ) 
    local Time = getRealTime (  ); 
    local Day = Time.monthday 
    local Month = Time.month + 1 
    local Year = Time.year + 1900 
    -- 
    if Month == 1 then Last = Day end 
    if Month == 2 then Last = Day + 30 end 
    if Month == 3 then Last = Day + 60 end 
    if Month == 4 then Last = Day + 90 end 
    if Month == 5 then Last = Day + 120 end 
    if Month == 6 then Last = Day + 150 end 
    if Month == 7 then Last = Day + 180 end 
    if Month == 8 then Last = Day + 210 end 
    if Month == 9 then Last = Day + 240 end 
    if Month == 10 then Last = Day + 270 end 
    if Month == 11 then Last = Day + 300 end 
    if Month == 12 then Last = Day + 330 end 
    -- 
    x = math.ceil ( ( Year - 1 ) * 365.25 ); 
    x = x + Last  
    x = math.abs ( x - 227015 ); 
    x = math.floor ( x * 30 ); 
    xx = x 
    x = math.floor ( x / 10631 ); 
    m = math.floor ( x * 10631 ); 
    m = math.abs ( m - xx ); 
    x2 = math.floor ( m / 30 ); 
    x2 = math.abs ( x2 - 13 ); 
    -- 
    if x2 >= 1 and x2 <= 30 then x4 = x2 x3 = 1 end 
    if x2 >= 31 and x2 <= 60 then x4 = x2 - 30 x3 = 2 end 
    if x2 >= 61 and x2 <= 90 then x4 = x2 - 60 x3 = 3 end 
    if x2 >= 91 and x2 <= 120 then x4 = x2 - 90 x3 = 4 end 
    if x2 >= 121 and x2 <= 150 then x4 = x2 - 120 x3 = 5 end 
    if x2 >= 151 and x2 <= 180 then x4 = x2 - 150 x3 = 6 end 
    if x2 >= 181 and x2 <= 210 then x4 = x2 - 180 x3 = 7 end 
    if x2 >= 211 and x2 <= 240 then x4 = x2 - 210 x3 = 8 end 
    if x2 >= 241 and x2 <= 270 then x4 = x2 - 240 x3 = 9 end 
    if x2 >= 271 and x2 <= 300 then x4 = x2 - 270 x3 = 10 end 
    if x2 >= 301 and x2 <= 330 then x4 = x2 - 300 x3 = 11 end 
    if x2 >= 331 and x2 <= 360 then x4 = x2 - 330 x3 = 12 end 
    -- 
    return tostring ( x4 ), tostring ( x3 ), tostring ( x + 1 ); 
end 

طريقتكـ كلها من البداية خطا .. عشان يسويها هجري يبي له حسابات والكود مهو بالسهولة ذي

Link to comment
تفضل ,,

الطريقة مو صحيحة 100 % راح تلاحظ تقدم أو تأخر ف الأيام

setTimer (  
    function (  ) 
        local Day, Month, Year = convertHistoryToHijri (  ); 
        outputChatBox ( Day .. "/" .. Month .. "/" .. Year .. " هـ" ); 
    end 
    , 1000 
    , 1  
); 
  
  
convertHistoryToHijri = function (  ) 
    local Time = getRealTime (  ); 
    local Day = Time.monthday 
    local Month = Time.month + 1 
    local Year = Time.year + 1900 
    -- 
    if Month == 1 then Last = Day end 
    if Month == 2 then Last = Day + 30 end 
    if Month == 3 then Last = Day + 60 end 
    if Month == 4 then Last = Day + 90 end 
    if Month == 5 then Last = Day + 120 end 
    if Month == 6 then Last = Day + 150 end 
    if Month == 7 then Last = Day + 180 end 
    if Month == 8 then Last = Day + 210 end 
    if Month == 9 then Last = Day + 240 end 
    if Month == 10 then Last = Day + 270 end 
    if Month == 11 then Last = Day + 300 end 
    if Month == 12 then Last = Day + 330 end 
    -- 
    x = math.ceil ( ( Year - 1 ) * 365.25 ); 
    x = x + Last  
    x = math.abs ( x - 227015 ); 
    x = math.floor ( x * 30 ); 
    xx = x 
    x = math.floor ( x / 10631 ); 
    m = math.floor ( x * 10631 ); 
    m = math.abs ( m - xx ); 
    x2 = math.floor ( m / 30 ); 
    x2 = math.abs ( x2 - 13 ); 
    -- 
    if x2 >= 1 and x2 <= 30 then x4 = x2 x3 = 1 end 
    if x2 >= 31 and x2 <= 60 then x4 = x2 - 30 x3 = 2 end 
    if x2 >= 61 and x2 <= 90 then x4 = x2 - 60 x3 = 3 end 
    if x2 >= 91 and x2 <= 120 then x4 = x2 - 90 x3 = 4 end 
    if x2 >= 121 and x2 <= 150 then x4 = x2 - 120 x3 = 5 end 
    if x2 >= 151 and x2 <= 180 then x4 = x2 - 150 x3 = 6 end 
    if x2 >= 181 and x2 <= 210 then x4 = x2 - 180 x3 = 7 end 
    if x2 >= 211 and x2 <= 240 then x4 = x2 - 210 x3 = 8 end 
    if x2 >= 241 and x2 <= 270 then x4 = x2 - 240 x3 = 9 end 
    if x2 >= 271 and x2 <= 300 then x4 = x2 - 270 x3 = 10 end 
    if x2 >= 301 and x2 <= 330 then x4 = x2 - 300 x3 = 11 end 
    if x2 >= 331 and x2 <= 360 then x4 = x2 - 330 x3 = 12 end 
    -- 
    return tostring ( x4 ), tostring ( x3 ), tostring ( x + 1 ); 
end 

طريقتكـ كلها من البداية خطا .. عشان يسويها هجري يبي له حسابات والكود مهو بالسهولة ذي

مافيها اي خطأ , بس فيه مشكلة بسيطة تقدم او تأخر ف التاريخ بنسبة قليلة , والحسابات مأخوذة من العجيري : )

Link to comment
لو في تقدم او تاخر بسيط ما احد بيستخدمها ..

ثانيا قلت لك يبي لها حسابات دقيقة جدا جدا مو بالشكل ذا

عارف أن حساباتها دقيقة وطويلة ,, بس أنا أخذت الحسابات من عند شخص مشهور ف هالمجال وهو العجيري

مصدر الحسابات إلي عملتها:

تحويل الميلادي إلى الهجري

لاستخراج التاريخ الهجري من الميلادي عكس ما سبق ، فنضرب السنين الميلادية التامة في 365 وربع ونزيد عليها أيام شهور السنة الناقصة ونطرح من الحاصل فرق الجريجوري والباقي نطرح منه سبق الميلادي وهو 227015 ثم نحول الباقي إلى سنين هجرية بأن نضربها في 30 ونقسم الحاصل على 10631 فالخارج سنون هجرية والباقي نقسمه على 30 ثم نوزعه على الشهور العربية ونعطي لكل شهر 29 يوماً ونصف ، فحيثما نفد العدد فهو التاريخ الهجري من السنة الناقصة .

مثال ذلك : المطلوب استخراج التاريخ الهجري ليوم 26 مايو 1968 ميلادية ، فنضرب السنين الميلادية التامة وهي 1967 في 365 وربع فيكون الحاصل 718447 نزيد عليه أيام شهور السنة الناقصة وهي 146 يوماً فيكون المجموع 718593 نطرح منه سبق الميلادي وهو 227015 فيكون الحاصل 491578 نضربه في 30 فيكون 14747340 نقسمه على 10631 فيكون الحاصل 1387 سنة هجرية تامة والباقي 2143 نقسمه على 30 فيكون خارج القسمة 71 يوماً نطرح منه فرق الجريجوري 13 يوماً فيكون حاصل الطرح 58 يوماً نوزعه على شهور السنة الهجرية ابتداءً من أول محرم فينفد العدد على يوم 28 صفر ويكون ذلك من السنة الناقصة وهي سنة 1388 هجرية .

ملاحظة : في العمليات المذكورة يجبر نصف اليوم فأكثر ويحسب عن يوم كامل أما إذا أقل من ذلك فيحذف .

فرق الجريجوري :

القرن الميلادي : 1900 || يوم : 13

القرن الميلادي : 2000 || يوم : 13

القرن الميلادي : 2100 || يوم : 14

القرن الميلادي : 2200 || يوم : 15

القرن الميلادي : 2300 || يوم : 16

القرن الميلادي : 2400 || يوم : 16

القرن الميلادي : 2500 || يوم : 17

دروس فلكية للمبدئين - د صالح العجيري - ص 32 / 33 / 34 / 35

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...