تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
استخراج عدد السنين من مجموع عدد الاشهر
#1
السلام عليكم ورحمة الله وبركاته

لدي عدد اشهر مثلا 23 شهر واريد استخراج كم سنة من هذا الرقم والباقي يعتبر اشهر

في العدد الذي لدينا وهو (23) يعني 1,11

اي 1 سنة و 11 شهر

اريد معادلة او دالة لتحسب في ما لو كان عدد الاشهر كبير مثلا 37 شهر 


من المفترض يكون لدينا 3 سنة و 1 شهر

بمعنى لا اريدة يظهر 3.08333333
الرد }}
تم الشكر بواسطة:
#2
ممكن تستخدم كود مثل هذا لحساب غدد السنوات و عدد الأشهر المتبقية معا


PHP كود :
   Private Sub GetYears(months As IntegerByRef years As IntegerByRef remainingMonths As Integer)
 
       If months 0 Then
            Dim x 
As Integer Math.Truncate(months 12)
 
           If x >= 0 Then
                years 
x
            End 
If

 
           Dim y As Integer months - (years 12)
 
           If y >= 0 Then
                remainingMonths 
y
            End 
If
 
       End If
 
   End Sub 

طريقة الاستخدام


كود :
       Dim years As Integer = Nothing
       Dim remainingMonths As Integer = Nothing
       GetYears(23, years, remainingMonths)
Retired
الرد }}
#3
الف شكر 10/10

ممكن طريقة تظهر عدد الاشهر بين تاريخين هجري
الرد }}
تم الشكر بواسطة: elgokr , elgokr
#4
كود بشكل أبسط 

كود :
       Dim Years As Integer = 23 \ 12
       Dim Months As Integer = 23 Mod 12
       Dim Monthsdif As Integer = DateDiff("m", Today.Date, New Date(2030, 6, 1))
الرد }}
تم الشكر بواسطة: sendbad100 , aftfm
#5
إقتباس :كود بشكل أبسط
في البرمجة لا يوجد شئ اسمه أسهل وأصعب
لكن فيه شئ اسمه كود صح او كود خطأ
اكتب الكود كيفما شئت المهم تكتبه صح وتضع في اعتبارك أن تتفادي الإخطاء أثناء التنفيذ
مثلا في الكود الخاص بك

PHP كود :
Dim Years As Integer 23 12 
ناتج هذا الكود سيعطيك 2 و ليس 1 و يفترض بك أن تستخدم Math.Truncate


بخصوص الفرق بين تاريخين يمكن استخدام كود مثل التالي


PHP كود :
       Dim startDate As DateTime DateTimePicker1.Value
        Dim endDate 
As DateTime DateTimePicker2.Value
        Dim days 
As Integer 0
        If startDate 
<> Nothing AndAlso endDate <> Nothing Then
            If endDate 
startDate Then
                days 
+= CInt(endDate.Subtract(startDate).TotalDays)
 
           End If
 
       End If 
Retired
الرد }}
تم الشكر بواسطة: السندبااد , elgokr , mrnooo2000 , sendbad100 , aftfm
#6
(28-06-18, 01:52 PM)silverlight كتب :
إقتباس :كود بشكل أبسط
في البرمجة لا يوجد شئ اسمه أسهل وأصعب
لكن فيه شئ اسمه كود صح او كود خطأ
اكتب الكود كيفما شئت المهم تكتبه صح وتضع في اعتبارك أن  تتفادي الإخطاء أثناء التنفيذ
مثلا في الكود الخاص بك

PHP كود :
Dim Years As Integer 23 12 
ناتج هذا الكود سيعطيك 2 و ليس 1 و يفترض بك أن تستخدم Math.Truncate

أشكرك أخى على التوضيح 

لكن اسمح لى أن أختلف معك 
من قال أنه لا يوجد شىء اسمه أسهل و أصعب 
بالطبع يمكن حل أى مشكلة بأكثر من حل لكن بالتأكيد هناك حل يكون سهل و بسيط و و واضح 
و هناك حل من الممكن أن يكون أكثر تعقيدا أو صعب استيعابه ( و هنا لا أقصد الكود الخاص بك ) 
و لكن أنا أتكلم بشكل عام 

بالنسبة لتفادى الأخطاء فأنا أتركها لصاحب السؤال 
أنا فقط أحاول أن أعطى الفكرة و أترك التطبيق لصاحب السؤال 
لأن الهدف هنا تعليمى بحت و ليس مجرد قص و لصق 
و بالنسبة للكود 
كود :
Dim Years As Integer = 23 \ 12

فهو يعطى نتيجة صحيحة و اعتقد انك تحتاج الى مراجعة الكود 
فأنا لم أخترع العجلة فوظيفة back slash  هنا هى ارجاع ناتج القسمة الصحيح
كما هى وظيفة mod ارجاع الباقى من عملية القسمة 

و بالنسبة لحساب فارق التاريخ فأنا وضعته لطلب الاخ السائل لكود يحسب فارق الاشهر بين تاريخين 

رزقنا الله و اياكم علما نافعا و نفعنا بما علمنا
الرد }}
تم الشكر بواسطة: elgokr
#7
لاى فكرة تعدد الطرق بكتابة الاكواد

من حيث ما اقترحه الاخ silverlight
فهو  قام بطرح الطريقة الافتراضية والصحيحة لما هو مقصود

لكن هل يعنى انه لا يوجد طرق اخرى وحلول اخرى بالطبع لا
يوجد الالاف من الطرق كما قدمه الاخ mrnooo2000

واذا كنا نتحدث عن طرق اخرى وبتقليل الاكواد

فيمكن ايضاً استخدام الفكرة عبارة عن سطر واحد فقط باستخدام التالى
كود :
Dim GetYM As String() = Split(Math.Round(Val(23 / 12), 3), ".")

وعند استدعاء عدد السنوات يتم كتابة كمثال
كود :
TextBox1.Text = GetYM(0)

وعند استدعاء الاشهر يتم كتابة كمثال
كود :
TextBox2.Text = Math.Round(Val(GetYM(1) / 1000) * 12, 0)

فيمكن ابتكار العديد من الطرق والكثير من الحلول من خلال الاكواد

فكل ما يتم اقتراحه من الاعضاء فهو عائد الى افادة الجميع
ومن يختار ما هو مناسب اليه وما يمكنه التعامل معه هو صاحب الموضوع

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

تحياتى للجميع
وتمنياتى لكم التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}
تم الشكر بواسطة:
#8
اشكر الجميع على التفاعل
ولكني استخدم التقويم الهجري وارغب في الحصول على سنوات الخدمة 

من خلال تاريخ التعيين وحتى تاريخ اليوم الحالي

لكن المشكلة تظهر فروقات في الاشهر واعتقد ان سبب ذلك التقويم الميلادي

استخدمت هذا الكود لاخراج الفرق بين التاريخين ولكن بعدد الاشهر 
لانه سيكون مثلا سنوات الخدمة عدد السنين و عدد الاشهر مثلا 20 سنة 5 اشهر

كود :
dim offset =new Date(1,1,1)
dim dateOne as DateTime = Convert.ToDateTime(Me.DateTimePicker1.Text)
dim dateTwo as DateTime = Convert.ToDateTime(Me.DateTimePicker2.Text)
dim diff as TimeSpan = datetwo - dateone
dim ye =(offset + diff).year
dim y, d as strintg
y=ye.toString
d=(datetwo.Month - dateone.month)
dim monthtotal as integer =((y *12)+d)

ومن ثم وضعت الناتج في الدالة الذي اضافها الاخ الفاضل [b]silverlight[/b]

ولكن النتائح غير دقيقة اعتقد ان الكود الذ اضفته فيه خلل آمل تعديل على الكود
الرد }}
تم الشكر بواسطة:
#9
(28-06-18, 09:51 PM)aftfm كتب : اشكر الجميع على التفاعل
ولكني استخدم التقويم الهجري وارغب في الحصول على سنوات الخدمة 

من خلال تاريخ التعيين وحتى تاريخ اليوم الحالي

لكن المشكلة تظهر فروقات في الاشهر واعتقد ان سبب ذلك التقويم الميلادي

استخدمت هذا الكود لاخراج الفرق بين التاريخين ولكن بعدد الاشهر 
لانه سيكون مثلا سنوات الخدمة عدد السنين و عدد الاشهر مثلا 20 سنة 5 اشهر

كود :
dim offset =new Date(1,1,1)
dim dateOne as DateTime = Convert.ToDateTime(Me.DateTimePicker1.Text)
dim dateTwo as DateTime = Convert.ToDateTime(Me.DateTimePicker2.Text)
dim diff as TimeSpan = datetwo - dateone
dim ye =(offset + diff).year
dim y, d as strintg
y=ye.toString
d=(datetwo.Month - dateone.month)
dim monthtotal as integer =((y *12)+d)

ومن ثم وضعت الناتج في الدالة الذي اضافها الاخ الفاضل [b]silverlight[/b]

ولكن النتائح غير دقيقة اعتقد ان الكود الذ اضفته فيه خلل آمل تعديل على الكود


الامر بسيط

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

فكل ما عليك هو استخدام السطر التالى
كود :
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB")

مع استدعاء كلاً من
كود :
Imports System.Globalization
Imports System.Threading

وبكده التواريخ ستعمل بالنظام الميلادى
فيمكنك بعدها التعامل من جلب الفارق بين التاريخين

تحياتى لك 
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}
تم الشكر بواسطة: aftfm
#10
الف شكر 

استخدم في البرنامج التاريخ الهجري
لذلك في التواريخ القريبة من عام 1439 لا تظهر مشكلة
ولكن في التواريخ القديمة مثل عام 1406 وحتى عام 1439 يعطي نتائج غير صحيحة

سأعمل مثال واضيفة ومن ثم التعديل عليه
الرد }}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كود استخراج المناسيب من جوجل ايرث samira20 0 341 30-11-21, 07:37 PM
آخر رد: samira20
  كود استخراج الاحداثيات من ملف نصي samira20 1 406 23-10-21, 06:45 AM
آخر رد: عبدالله الدوسري
  استخراج نص من webbrowser ووضعه بrichtextbox Basil Abdallah 8 1,638 04-10-21, 12:41 AM
آخر رد: نضال ابو العافية
  استخراج كافية قيم المصفوفه وتعديلها ثم اعادتها Basil Abdallah 2 623 25-09-21, 08:19 PM
آخر رد: Basil Abdallah
  [VB.NET] استخراج سورس كود برنامج مبيعات CoderMM 1 831 04-08-21, 01:39 PM
آخر رد: ابو انس
  استخراج نصوص من موقع aldery 2 710 14-07-21, 03:23 PM
آخر رد: aldery
  [VB.NET] سؤال حول استخراج سيريال الهارد -المذر-المعالج ابو انس 2 772 13-02-21, 07:17 PM
آخر رد: ابو انس
Wink [سؤال] استخراج بيانات موجودة في RichTextBox وعرضها في TextBox ana ali 3 946 01-02-21, 02:55 AM
آخر رد: سعود
  سؤال في معرفه مجموع الاعداد اليوم السابع 18 2,228 11-01-21, 06:14 PM
آخر رد: اليوم السابع
  استخراج كلمه اليوم السابع 0 673 01-01-21, 04:02 PM
آخر رد: اليوم السابع

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم