منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
استخراج عدد السنين من مجموع عدد الاشهر - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : استخراج عدد السنين من مجموع عدد الاشهر (/showthread.php?tid=25527)

الصفحات: 1 2


RE: استخراج عدد السنين من مجموع عدد الاشهر - silverlight - 29-06-18

جاول تستخدم الدالة التالية لحساب اجمالي عدد أيام الخدمة
وياريت ترجع بالنتائج


PHP كود :
  Private Function GetTotalWorkingDays(startDate As DateTimeendDate As DateTime) As Integer
        Dim result 
As Integer 1
        If endDate 
startDate Then
            Dim diff 
CInt(endDate.Subtract(startDate).TotalDays)
 
           result += Enumerable.Range(resultdiff).Select(Function(xstartDate.AddDays(x)).Count(Function(xx.DayOfWeek <> DayOfWeek.Saturday AndAlso x.DayOfWeek <> DayOfWeek.Friday)
 
       End If
 
       Return result
    End 
Function 



RE: استخراج عدد السنين من مجموع عدد الاشهر - elgokr - 29-06-18

فى هذه الحالة 
ستحتاج الى تحويل التاريخ الهجرى الى ميلادى

مثلاً لديك تاريخ 1/6/1406 والذى يوافق 11/2/1986
الى التاريخ 14/10/1439 والذى يوافق 28/6/2018

من ثم عمل فارق التاريخ بين من الى للتاريخ الميلادى
وبكده تكون حللت مشكلة فارق الايام التى بالسنة 
والتى تعطي فارق بين السنين

طريقة تحويل التاريخ الهجري الى ميلادى
كود :
       Dim hijri As New HijriCalendar()
       Dim dt As Date = New DateTime(1406, 6, 1, hijri)
       TextBox1.Text = dt.ToString("dd/MM/yyyy", CultureInfo.CreateSpecificCulture("en-US"))

ولطريقة الاستخدام كاملاً طبقاً لما فهمته من طلبك

كل ما عليك استخدام الكود التالى مع تغيير التواريخ لما هو لديك
كود :
       Dim culinf As CultureInfo = CultureInfo.CreateSpecificCulture("en-US")
       Thread.CurrentThread.CurrentCulture = culinf

       Dim hijri As New HijriCalendar()

       Dim dt1 As Date = New Date(1406, 6, 1, hijri)
       Dim dt2 As Date = New Date(1439, 10, 14, hijri)

       Dim datTim1 As String() = Split(dt1.ToString("yyyy/MM/dd", culinf), "/")
       Dim datTim2 As String() = Split(dt2.ToString("yyyy/MM/dd", culinf), "/")

       Dim dd1 As Date = New Date(1986, 2, 11)
       Dim dd2 As Date = New Date(2018, 6, 28)

       TextBox1.Text = DateDiff(DateInterval.Year, dd1, dd2)
       TextBox2.Text = Val(DateDiff(DateInterval.Month, dd1, dd2)) - Val(TextBox2.Text * 12)


تحياتى لك
وتمنياتى لك التوفيق



RE: استخراج عدد السنين من مجموع عدد الاشهر - aftfm - 29-06-18

الف شكر للجميع

هذه مثال وضعته 

بالنسبة للدالة التي اضافة الاخ الفاضل silverlight  لم استطع استخدامها بالشكل الامثل ووضعتها في المثال آمل التعديل عليها


وبالنسبة للكود الذي وضعة الاخ الفاضل  elgokr 

اعطاني عدد السنوات 32 
ناقص سنة من تاريخ 1/6/1406 وحتى تاريخ اليوم 15/10/1439
من المفترض يكون الناتج 33 عام 
وتضاف اليه عدد الاشهر الباقية وهي 4 اشهر

في السطر الاخير ظهر خطاء


RE: استخراج عدد السنين من مجموع عدد الاشهر - mrnooo2000 - 29-06-18

الاخ السائل بما أنك تستخدم التاريخ الهجرى فكل ما تحتاج اليه هو هذاه الاسطر 
ضعهم فى كود الزر أو حدث تغير قيمة DateTimepicker

كود :
       Dim Months As Integer = DateDiff("m", DateTimePicker1.Value, Today.Date)
       TextBox1.Text = Months \ 12
       TextBox2.Text = Months Mod 12

و اذا كنت تستخدم التاريخ الميلادى و تريد حساب الفارق بالتاريخ الهجرى 
أضف هذين السطرين قبل الكود السابق 

كود :
Dim ci As New Globalization.CultureInfo("ar-SA")
       Thread.CurrentThread.CurrentCulture = ci

جرب و أخبرنى بالنتيجة


جربت هذا الكود لدى لتجربة التاريخين الموجودين فى مشاركتك و كانت النتيجة كما ذكرت 33 سنة و 4 أشهر

كود :
       Dim ci As New Globalization.CultureInfo("ar-SA")
       Thread.CurrentThread.CurrentCulture = ci
       Dim hijri As New UmAlQuraCalendar()
       Dim dt1 As Date = New Date(1406, 6, 1, hijri)
       Dim dt2 As Date = New Date(1439, 10, 15, hijri)

       Dim Months As Integer = DateDiff("m", dt1, dt2)
       TextBox1.Text = Months \ 12
       TextBox2.Text = Months Mod 12



RE: استخراج عدد السنين من مجموع عدد الاشهر - silverlight - 29-06-18

كود :
       ' تحديد تاريخ بداية الخدمة
       Dim serviceStarted As DateTime = DateTimePicker1.Value
       ' تحديد تاريخ نهاية الخدمة
       Dim serviceEnd As DateTime = DateTimePicker2.Value
       ' حساب عدد أيام الخدمة
       Dim days As Integer = GetTotalWorkingDays(serviceStarted, serviceEnd)
       ' اقسم عدد الايام علي 30 فتتحصل علي عدد شهور الخخدمة أو اقسم عدد الأيام علي 365 فتحصل علي عدد سنوات الخدمة



RE: استخراج عدد السنين من مجموع عدد الاشهر - Done - 29-06-18

PHP كود :
Sub Servicecalc()
 
   Dim c As New UmAlQuraCalendar

    Dim d1 
As Date = New Date(140661c)
 
   Dim d2 As Date = New Date(14391015c)

 
   Dim y c.GetYear(d2) - c.GetYear(d1)
 
   Dim m c.GetMonth(d2) - c.GetMonth(d1)
 
   If m 0 Then y -= 12 Math.Abs(m)

 
   MsgBox("Years: " " , Months: " m)
End Sub 



RE: استخراج عدد السنين من مجموع عدد الاشهر - سعود - 29-06-18

مشاركة لاخواني اضع هذا الرابط.


RE: استخراج عدد السنين من مجموع عدد الاشهر - elgokr - 29-06-18

(29-06-18, 02:56 PM)aftfm كتب : الف شكر للجميع

هذه مثال وضعته 

بالنسبة للدالة التي اضافة الاخ الفاضل silverlight  لم استطع استخدامها بالشكل الامثل ووضعتها في المثال آمل التعديل عليها


وبالنسبة للكود الذي وضعة الاخ الفاضل  elgokr 

اعطاني عدد السنوات 32 
ناقص سنة من تاريخ 1/6/1406 وحتى تاريخ اليوم 15/10/1439
من المفترض يكون الناتج 33 عام 
وتضاف اليه عدد الاشهر الباقية وهي 4 اشهر

في السطر الاخير ظهر خطاء


بالطبع سيعطيك عدد السنوات 32 اخى الكريم لان هذه هى السنوات الفعلية بالميلادي

لكن اذا كنت تريد احتساب التاريخ كما هو بالتاريخ الهجري ليصبح 33

كل ما عليك حذف الاسطر التالية من الكود
كود :
Dim culinf As CultureInfo = CultureInfo.CreateSpecificCulture("en-US")
      Thread.CurrentThread.CurrentCulture = culinf

وستجد بالنهاية ان الناتج 33 و 4 اشهر

تحياتى لك
وتمنياتى لك التوفيق



RE: استخراج عدد السنين من مجموع عدد الاشهر - aftfm - 29-06-18

اشكر كل من ساهم في هذا الموضوع جزاكم الله خير

كود :

كود :
       Dim Months As Integer = DateDiff("m", DateTimePicker1.Value, Today.Date)
       TextBox1.Text = Months \ 12
       TextBox2.Text = Months Mod 12

و اذا كنت تستخدم التاريخ الميلادى و تريد حساب الفارق بالتاريخ الهجرى 
أضف هذين السطرين قبل الكود السابق 

كود :

كود :
Dim ci As New Globalization.CultureInfo("ar-SA")
       Thread.CurrentThread.CurrentCulture = ci


هذا الكود ادى الغرض ولله الحمد ونتائج ممتازة 
قد اكون لم اسحن استخدام اكواد الاخوة الذين افادونا بمقترحاتهم ولكن اجدد شكري لهم


RE: استخراج عدد السنين من مجموع عدد الاشهر - elgokr - 29-06-18

الشكر لله
تحياتى لك
وتمنياتى لك التوفيق