المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : التحويل بين date_fmt_iso و date_fmt_julian


ثامر أبو بلقيس
02-03-2016, 11:06 PM
السلام عليكم ورحمة الله وبركاته

من المؤكد أن الطرح بسيط ... فقط أحببت الكتابة فقلت من الجيد
الاشارة إلى أن برنامجنا يتوفر على إمكانية إظهار التاريخ بصيغ على الأقل
المذكورين أعلاه في العنوان DATE_FMT_ISO و DATE_FMT_JULIAN
فــ :
الصيغة JULIAN بدون الخوض في ماهيتها ما يهمني هي معبرة عن التاريخ بعدد
مثال : سأقول عمدا العدد 2457054 هو التاريخ 31-01-2015 مرات نحتاج للتاريخ بهده الصيغة
مثلا كأن يكون بحثا وفق ناريخ معين و خاصة في قواعد البيانات
أو إجراء عمليات معينة كمدة صلاحية معينة لبرنامج أو حساب عدد أيام لفترة عمل أو ..
اذن فالصيغة العددية للتاريخ قد تسهل كثيرا حسب الفكرة المراد تطبيقها و بنائها لذلك قد نحتاج لكود
يحول لي التاريخ المكتوب بطريقة عادية إلى هذه السلسلة الرقمبة
مثلا : التاريخ 31-01-2015 ماذا يقابله :
كود :
tamer1 = os.time({year=2015, month=1, day=31})
b1 = Math.Ceil((tamer1 / 86400) + 2440587.5)
Dialog.Message("Notice", b1);

الان نأتي للعكس ماذا لو كان نعرف أو لدينا القيمة 2457054 ماهو التاريخ الموافق لها
نجرب الكود :
v=2457054
K = (v - 2440587.5) * 86400
data = os.date("%Y-%m-%d",K)
Dialog.Message("Notice", data);
أليس الناتج :
31-01-2015



تمرين بسيط للاستغلال
احسب عدد الايام المنقضية من التاريخ 31-01-2015
إلى غاية 31-01-2016
للاطلاع على الحل يمكن متابعة الردود
:abc_138:
موفق.

فرح صالحي
02-03-2016, 11:14 PM
شـكــ وبارك الله فيك ـــرا لك .:abc_138:.. لك مني أجمل تحية .

Haitham.2012
05-03-2016, 05:07 PM
جيد اخي ثامر.. افكار روعه نستفيد منها بكل تأكيد

:abc_152:

عبد الهادي بهاب
05-03-2016, 06:32 PM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

ربي يحفظكم استاذ ساحاول توظيفه

أبو يوسف
06-03-2016, 03:59 PM
بارك الله فيك اخانا تامر على هذا الإثراء :abc_139:

ثامر أبو بلقيس
12-06-2016, 05:23 AM
من الجبد تذكر التمرين و كتابة الحل :
--- التاريخ الأول
tamer1 = os.time({year=2015, month=1, day=31})
b1 = String.ToNumber(Math.Ceil((tamer1 / 86400) + 2440587.5))
--- التاريخ الثاني
tamer2 = os.time({year=2016, month=1, day=31})
b2 =String.ToNumber( Math.Ceil((tamer2 / 86400) + 2440587.5))
----------------
v= b2-b1
Dialog.Message("Notice", v);