منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : مطلوب كود حساب العمر بالسنة والشهر واليوم
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمه الله وبركاته..

احتاج مساعدة في ايجاد كود يحسب العمر بالسنة والشهر واليوم (يكون بالتاريخ الهجري)

اتمنى تفيدوني  Heart
السلام عليكم  ،،  

هذا كود كتبته قبل فتره  طويله و لا اعلم هل نتائجه مضمونه  100%  دائما او لا  ،،  لكنه يفي بالغرض  ، على العموم  الـ  function  تسمح لك بالحساب الميلادي و الهجري فقط  قم بتحديد  نوع الكاليندر  أما ميلادي أو أم القرى  و الكود مشروح ، لا اعتقد انه سيكون صعب عليك فهمه :


كود :
    ''' <summary>
    ''' نوع الكاليندر المستخدم في الحساب
    ''' </summary>
    ''' <remarks></remarks>
    Enum CalenderType
        Gregorian = 1
        UmAlQura = 0
    End Enum

    ''' <summary>
    ''' حساب العمر
    ''' </summary>
    ''' <param name="birthdate">تاريخ الميلاد</param>
    ''' <param name="oCalenderType">حساب العمر بالهجري او الميلادي</param>
    ''' <param name="onlyReturnYear">ارجاع فقط السنة</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function calculateAge(ByVal birthdate As DateTime, Optional ByVal oCalenderType As CalenderType = CalenderType.Gregorian, Optional ByVal onlyReturnYear As Boolean = True, Optional ByVal showFullTextAsEn As Boolean = False) As String

        Dim cultureCalendar As Object

        If oCalenderType = CalenderType.Gregorian Then
            cultureCalendar = New System.Globalization.UmAlQuraCalendar
        Else
            cultureCalendar = New System.Globalization.GregorianCalendar
        End If

        Dim birthDay As Integer = 0
        Dim birthMonth As Integer = 0
        Dim birthYear As Integer = 0

        birthDay = cultureCalendar.GetDayOfMonth(Now) - cultureCalendar.GetDayOfMonth(birthdate)
        birthMonth = cultureCalendar.GetMonth(Now) - cultureCalendar.GetMonth(birthdate)
        birthYear = cultureCalendar.GetYear(Now) - cultureCalendar.GetYear(birthdate)
        If birthDay < 0 Then
            birthDay = 30 + birthDay
            birthMonth = birthMonth - 1
        End If
        If birthMonth < 0 Then
            birthMonth = birthMonth + 12
            birthYear = birthYear - 1
        End If

        Dim birthFull As String = ""

        If onlyReturnYear = True Then
            birthFull = birthYear.ToString
        Else
            If showFullTextAsEn = True Then
                birthFull = String.Format("{0} years , {1} months , {2} days", birthYear.ToString, birthMonth.ToString, birthDay.ToString) '   (birthDay.ToString + "/" + birthMonth.ToString + "/" + )
            Else
                birthFull = String.Format("{0} سنة و {1} أشهر و {2} أيام.", birthYear.ToString, birthMonth.ToString, birthDay.ToString) '   (birthDay.ToString + "/" + birthMonth.ToString + "/" + )
            End If

        End If

        Return birthFull
    End Function



و اذا احد من الاخوه لديه  تعديل  أو  ملاحظه أو تحسين لعملية الحساب أن يضعه  هنا
myalsailamy
جميل علي

شكراا لكم جزاكم الله خير
لا اعلم ان كانت تجربتي فاشلة ام لسوء حظ
فالتاريخ الهجري لا يكون دقيقا في مثل هذه الاحوال
PHP كود :
Dim dob As DateTime
      dob 
= New DateTime(DateTimePicker1.Value.YearDateTimePicker1.Value.Month,           DateTimePicker1.Value.Day)
       
Dim tday As TimeSpan DateTime.Now.Subtract(dob)
       
Dim years As Integermonths As Integerdays As Integer
       months 
12 * (DateTime.Now.Year dob.Year) + (DateTime.Now.Month dob.Month)
 
       If 
DateTime.Now.Day dob.Day Then
           months 
-= 1
           days 
DateTime.DaysInMonth(dob.Yeardob.Month) - dob.Day DateTime.Now.Day
       
Else
           
days DateTime.Now.Day dob.Day
       End 
If
       
years Math.Floor(months 12)
       
months -= years 12
       MsgBox
("Your age as on " Format(Now"dd-MMM-yyyy") & vbCrLf years " Years, " months " Months and " days " Days"
وحتى في الميلادي فالامر يحتاج للانتباه للسنوات الكبيسة
شكراا لكم جزاكم الله خير