Glmd Posted August 11, 2014 Share Posted August 11, 2014 انا سالت صديقي عن كود يجيب التاريخ وقال اسال في المنتدى وانشالله تسعدوني وشكرا لكم Link to comment
Glmd Posted August 11, 2014 Author Share Posted August 11, 2014 getRealTime يسلمو ممكن مثال عليا Link to comment
#DRAGON!FIRE Posted August 11, 2014 Share Posted August 11, 2014 خش عليها وبتشوف مثال واضح جدا . Link to comment
Glmd Posted August 12, 2014 Author Share Posted August 12, 2014 time = getRealTime ( ) guiSetText ( edit[1] , time ) ماصار Link to comment
#DRAGON!FIRE Posted August 12, 2014 Share Posted August 12, 2014 انت وش تبي ؟ السنة ولا الشهر ولا وش Link to comment
Glmd Posted August 12, 2014 Author Share Posted August 12, 2014 انت وش تبي ؟ السنة ولا الشهر ولا وش ابلي كلذا 1435/10/2 Link to comment
#DRAGON!FIRE Posted August 12, 2014 Share Posted August 12, 2014 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
Glmd Posted August 12, 2014 Author Share Posted August 12, 2014 من فضلك أريد الحصول على التاريخ الهجري، وأيضاً لدي سؤال ما الفائدة من هذا السطر؟ md = "0"..md Link to comment
#DRAGON!FIRE Posted August 12, 2014 Share Posted August 12, 2014 لو تريد بالهجري فـ الكود بيتعقد اكثر .. الجميع يستخدم الميلأدي بالنسبة للسطر فـ انا تحققت لو عدد يوم الاسبوع اصغر من 10 .. احط 0 والرقم عشان يجي الصفر واليوم اتمنى فهمت . Link to comment
Glmd Posted August 12, 2014 Author Share Posted August 12, 2014 لو تريد بالهجري فـ الكود بيتعقد اكثر .. الجميع يستخدم الميلأدي بالنسبة للسطر فـ انا تحققت لو عدد يوم الاسبوع اصغر من 10 .. احط 0 والرقم عشان يجي الصفر واليوم اتمنى فهمت . أنا أريد الحصول على التاريخ الهجري، فمن يعرف كيف؟ بالنسبة إلى الصفر لا داعي له الآن. Link to comment
#DRAGON!FIRE Posted August 12, 2014 Share Posted August 12, 2014 الكود معقد وفيه شوية حسابات . Link to comment
Glmd Posted August 12, 2014 Author Share Posted August 12, 2014 أتمنى أن تكون الردود للمساعدة وليس لتوضيح شيء معروف! بالنسبة لكود الصفر بأمكانك اختصاره هكذا: string.format("%02d", "1") -- 01 Link to comment
Glmd Posted August 12, 2014 Author Share Posted August 12, 2014 أين أنتم يا "المبرمجين المحترفين" إلى الآن لم تصلني مساعدة كافية. Link to comment
#DRAGON!FIRE Posted August 12, 2014 Share Posted August 12, 2014 أتمنى أن تكون الردود للمساعدة وليس لتوضيح شيء معروف!بالنسبة لكود الصفر بأمكانك اختصاره هكذا: string.format("%02d", "1") -- 01 مدام شي معروف ما احد بيقدر يساعدكـ .. الكود صعب ومعقد ثاني شي انت قلت ( اختصارهـ ) تشوف كودي اسهل ولا استخدم الفورمات ! . ثالث شي نوع الفورمات خطا . Link to comment
Glmd Posted August 12, 2014 Author Share Posted August 12, 2014 حسناً، سوف أنتظر الخبراء، ورجاءاً إن لم تملك مساعدة فلا داعي للرد. Link to comment
iMr.TZ[W]ER Posted August 12, 2014 Share Posted August 12, 2014 أتمنى أن تكون الردود للمساعدة وليس لتوضيح شيء معروف!بالنسبة لكود الصفر بأمكانك اختصاره هكذا: string.format("%02d", "1") -- 01 مدام شي معروف ما احد بيقدر يساعدكـ .. الكود صعب ومعقد ثاني شي انت قلت ( اختصارهـ ) تشوف كودي اسهل ولا استخدم الفورمات ! . ثالث شي نوع الفورمات خطا . اتوقع في سكربتات تاريخ بالانترنت وهو يسوي موقع مجاني ويسوي callRemot تزبط صح ؟ بس معقدة اما شغل حسابات مستحيلة لانه على ظهور القمر التاريخ الهجري Link to comment
jafar Posted August 12, 2014 Share Posted August 12, 2014 تفضل ,, الطريقة مو صحيحة 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
nxFairlywell Posted August 12, 2014 Share Posted August 12, 2014 اللهم ابعدني عن الحسابات والرياضيات Link to comment
#DRAGON!FIRE Posted August 12, 2014 Share Posted August 12, 2014 تفضل ,,الطريقة مو صحيحة 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
jafar Posted August 12, 2014 Share Posted August 12, 2014 تفضل ,,الطريقة مو صحيحة 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
#DRAGON!FIRE Posted August 12, 2014 Share Posted August 12, 2014 لو في تقدم او تاخر بسيط ما احد بيستخدمها .. ثانيا قلت لك يبي لها حسابات دقيقة جدا جدا مو بالشكل ذا Link to comment
jafar Posted August 12, 2014 Share Posted August 12, 2014 لو في تقدم او تاخر بسيط ما احد بيستخدمها ..ثانيا قلت لك يبي لها حسابات دقيقة جدا جدا مو بالشكل ذا عارف أن حساباتها دقيقة وطويلة ,, بس أنا أخذت الحسابات من عند شخص مشهور ف هالمجال وهو العجيري مصدر الحسابات إلي عملتها: تحويل الميلادي إلى الهجري لاستخراج التاريخ الهجري من الميلادي عكس ما سبق ، فنضرب السنين الميلادية التامة في 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
Glmd Posted August 12, 2014 Author Share Posted August 12, 2014 شكراً جزيلاً على المساعدة. Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now