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

هذا كود لتحويل الوقت لكلمات عربية 
(الوقت المقروء من الساعة أو قاعدة بيانات مثلاً ،، وليس تفقيط للوقت وقت العمل المتراكم الذي يساوي عشرات الساعات، فذاك شيء آخر)

فقط اسند للدالة متغير من نوع وقت وتاريخ   وهو سيقوم بإرجاع اللفظ العربي للوقت..

والآن أترككم مع الكود :

كود :
Public Function UNitToText(ByVal Time_hhmmss As DateTime) As String

   Dim strNum_tt As String = Time_hhmmss.ToString("tt")
   Dim strNum As String = Time_hhmmss.ToString("hh:mm:ss")

   '========================================================
   Dim TimeArray() As String = Split(strNum, ":")

   Dim strH As String, StrM As String, StrS As String

   strH = GetHour_String(TimeArray(0))

   StrM = Getmmss_String(TimeArray(1), "دقيقة", "دقيقتان", "دقائق")

   StrS = Getmmss_String(TimeArray(2), "ثانية", "ثانيتان", "ثوانٍ")

   Dim str_tt As String = " مساءاً"
   If strNum_tt = "AM" Then str_tt = " صباحاً"

   Dim hs1 As String = "الساعة "

   Return hs1 & strH & str_tt & StrM & StrS
End Function

Private Function GetHour_String(hH As String) As String

   Select Case hH
       Case "00"
           Return "الثانية عشر"
       Case "01"
           Return "الواحدة"
       Case "02"
           Return "الثانية"
       Case "03"
           Return "الثالثة"
       Case "04"
           Return "الرابعة"
       Case "05"
           Return "الخامسة"
       Case "06"
           Return "السادسة"
       Case "07"
           Return "السابعة"
       Case "08"
           Return "الثامنة"
       Case "09"
           Return "التاسعة"
       Case "10"
           Return "العاشرة"
       Case "11"
           Return "الحادية عشر"
       Case "12"
           Return "الثانية عشر"
       Case Else
           Return ""
   End Select
End Function

Private Function Getmmss_String(mmss As String, sQ1 As String, sQ2 As String, sQ3 As String) As String
   Dim Arr1(0 To 9) As String
   Dim Arr2(0 To 5) As String

   Arr1(0) = ""
   Arr1(1) = "واحد"
   Arr1(2) = "اثنان"
   Arr1(3) = "ثلاثة"
   Arr1(4) = "أربعة"
   Arr1(5) = "خمسة"
   Arr1(6) = "ستة"
   Arr1(7) = "سبعة"
   Arr1(8) = "ثمانية"
   Arr1(9) = "تسعة"

   Arr2(0) = ""
   Arr2(1) = "عشرة"
   Arr2(2) = "عشرون"
   Arr2(3) = "ثلاثون"
   Arr2(4) = "أربعون"
   Arr2(5) = "خمسون"

   '========================================================

   Dim S1 As Integer = Mid(mmss, 2, 1)
   Dim S11 As String = Arr1(S1)
   Dim S2 As Integer = Mid(mmss, 1, 1)
   Dim S22 As String = Arr2(S2)

   Dim SS0 As String

   If S2 = "0" Then
       Select Case S1
           Case "1"
               S11 = sQ1
           Case "2"
               S11 = sQ2
           Case > 2
               S11 = S11 & " " & sQ3
       End Select
       SS0 = S11
   ElseIf S2 = "1" Then
       Select Case S1
           Case "1"
               S11 = "أحد  "
               S22 = "عشر "
           Case "2"
               S11 = "إثنا  "
               S22 = "عشر "
           Case Else
               S22 = " عشر "
       End Select
       If S1 = "0" Then
           SS0 = S11 & S22 & sQ3
       Else
           SS0 = S11 & S22 & sQ1
       End If
   Else
       If S11.Trim() = "" Then
           SS0 = S22 & " " & sQ1
       Else
           SS0 = S11 & " و " & S22 & " " & sQ1
       End If
   End If
   '=========================================================
   If SS0.Trim() <> "" Then SS0 = " و " & SS0
   Return SS0

End Function

كود الاستدعاء هو : 

كود :
Label1.Text = UNitToText(DateTime.Now)
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
#2
جزيت كل الخير اخي ،، تم التعديل عليها بيشكل بسيط لتتلائم مع الوقت التراكمي ،، الف شكر لك على المساعدة
الرد }}}
تم الشكر بواسطة: ahmed_king2023 , foo
#3
(15-04-23, 02:30 AM)Taha Okla كتب : السلام عليكم ورحمة الله وبركاته 

هذا كود لتحويل الوقت لكلمات عربية 
(الوقت المقروء من الساعة أو قاعدة بيانات مثلاً ،، وليس تفقيط للوقت وقت العمل المتراكم الذي يساوي عشرات الساعات، فذاك شيء آخر)

الاخ الكريم Taha تم عمل تعديل بسيط للحصول على الوقت التراكمي
المشكلة في الساعة 00 تصبح 12 فهل يمكنك المساعدة
لإني استخدمها لحساب الساعات ، مثل "ساعات التأخر"  عندما تكون "00:10:00" يفترض ان تكون عشر دقائق فقط
شاكر ومقدر للجميع

كود :
Public Function UNitToText(ByVal Time_hhmmss As DateTime) As String


       Dim strNum As String = Time_hhmmss.ToString("hh:mm:ss")

       '========================================================
       Dim TimeArray() As String = Split(strNum, ":")

       Dim strH As String, StrM As String, StrS As String

       strH = GetHour_String(TimeArray(0))

       StrM = Getmmss_String(TimeArray(1), "دقيقة", "دقيقتان", "دقائق")

       StrS = Getmmss_String(TimeArray(2), "ثانية", "ثانيتان", "ثوانٍ")

       Return strH & StrM & StrS
   End Function

   Private Function GetHour_String(hH As String) As String

       Select Case hH
           Case "00"
               Return "صفر"
           Case "01"
               Return "ساعة واحدة"
           Case "02"
               Return "ساعتان"
           Case "03"
               Return "ثلاث ساعات"
           Case "04"
               Return "اربع ساعات"
           Case "05"
               Return "خمس ساعات"
           Case "06"
               Return "ست ساعات"
           Case "07"
               Return "سبع ساعات"
           Case "08"
               Return "ثمان ساعات"
           Case "09"
               Return "تسع ساعات"
           Case "10"
               Return "عشر ساعات"
           Case "11"
               Return "احدى عشرة ساعة"
           Case "12"
               Return "اثنتي عشرة ساعة"
           Case Else
               Return ""
       End Select
   End Function

   Private Function Getmmss_String(mmss As String, sQ1 As String, sQ2 As String, sQ3 As String) As String
       Dim Arr1(0 To 9) As String
       Dim Arr2(0 To 5) As String

       Arr1(0) = ""
       Arr1(1) = "واحد"
       Arr1(2) = "اثنان"
       Arr1(3) = "ثلاثة"
       Arr1(4) = "أربعة"
       Arr1(5) = "خمسة"
       Arr1(6) = "ستة"
       Arr1(7) = "سبعة"
       Arr1(8) = "ثمانية"
       Arr1(9) = "تسعة"

       Arr2(0) = ""
       Arr2(1) = "عشرة"
       Arr2(2) = "عشرون"
       Arr2(3) = "ثلاثون"
       Arr2(4) = "أربعون"
       Arr2(5) = "خمسون"

       '========================================================

       Dim S1 As Integer = Mid(mmss, 2, 1)
       Dim S11 As String = Arr1(S1)
       Dim S2 As Integer = Mid(mmss, 1, 1)
       Dim S22 As String = Arr2(S2)

       Dim SS0 As String

       If S2 = "0" Then
           Select Case S1
               Case "1"
                   S11 = sQ1
               Case "2"
                   S11 = sQ2
               Case Is > 2
                   S11 = S11 & " " & sQ3
           End Select
           SS0 = S11
       ElseIf S2 = "1" Then
           Select Case S1
               Case "1"
                   S11 = "أحد  "
                   S22 = "عشر "
               Case "2"
                   S11 = "إثنا  "
                   S22 = "عشر "
               Case Else
                   S22 = " عشر "
           End Select
           If S1 = "0" Then
               SS0 = S11 & S22 & sQ3
           Else
               SS0 = S11 & S22 & sQ1
           End If
       Else
           If S11.Trim() = "" Then
               SS0 = S22 & " " & sQ1
           Else
               SS0 = S11 & " و " & S22 & " " & sQ1
           End If
       End If
       '=========================================================
       If SS0.Trim() <> "" Then SS0 = " و " & SS0
       Return SS0

   End Function
الرد }}}
تم الشكر بواسطة: foo
#4
(23-04-23, 05:12 PM)assuhimi كتب :
(15-04-23, 02:30 AM)Taha Okla كتب : السلام عليكم ورحمة الله وبركاته 

هذا كود لتحويل الوقت لكلمات عربية 
(الوقت المقروء من الساعة أو قاعدة بيانات مثلاً ،، وليس تفقيط للوقت وقت العمل المتراكم الذي يساوي عشرات الساعات، فذاك شيء آخر)

الاخ الكريم Taha تم عمل تعديل بسيط للحصول على الوقت التراكمي
المشكلة في الساعة 00 تصبح 12 فهل يمكنك المساعدة
لإني استخدمها لحساب الساعات ، مثل "ساعات التأخر"  عندما تكون "00:10:00" يفترض ان تكون عشر دقائق فقط
شاكر ومقدر للجميع
تفقيط الوقت مختلف عن هذا الكود كثيراً 
التشابه فقط مع الدقائق والثواني 
أما الساعات فتفقط كما تفقط الأرقام الصحيحة
راجع هذا الموضوع :
كود لتفقيط الوقت التراكمي
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
تم الشكر بواسطة: foo
#5
صراحة لم افهم الموضوع لعدم وجود مثال هلارة عن وقت ونتيجة مثل (1:35 الساعه الواحدة وخمسة وثلاثبن دقيقة) هل هذا هو المقصود؟
والاخ assuhimi عندما قال(تم التعديل عليها بيشكل بسيط لتتلائم مع الوقت التراكمي) ما المقصود بالتراكمي؟

للتو انتبهت بوجود موضوع اخر (كود لتفقيط الوقت التراكمي) وايضا لم استوعبه!

عموما ما الفائده من هذه الطريقة وفيم تستخدم (ياليت عدة امثله)؟
الرد }}}
تم الشكر بواسطة:
#6
(23-04-23, 11:22 PM)foo كتب : صراحة لم افهم الموضوع لعدم وجود مثال هلارة عن وقت ونتيجة مثل (1:35 الساعه الواحدة وخمسة وثلاثبن دقيقة) هل هذا هو المقصود؟
والاخ علي السحيمي عندما قال(تم التعديل عليها بيشكل بسيط لتتلائم مع الوقت التراكمي) ما المقصود بالتراكمي؟

للتو انتبهت بوجود موضوع اخر (كود لتفقيط الوقت التراكمي) وايضا لم استوعبه!

عموما ما الفائده من هذه الطريقة وفيم تستخدم (ياليت عدة امثله)؟

في هذا الموضوع سردنا كود لقراءة الوقت وأظن هذا مفهوم..
..
لكن في موضوع تفقيط الوقت 
الكود من أجل حساب مجموع ساعات لعمل ما
مثلا ساعات العمل اليومية الرسمية هي 8 ساعات او 9 ساعات(ل ستة ايام من اسبوع   او ل ثلاثة عشر يوما من اسبوعين) بحسب نوع المنشأة
فلو كان هناك زيادة عن ساعات العمل القانونية سيحتسب قيمة الوقت الاضافي   
وهذا الوقت التراكمي فينا نجمعه شهريا
ويتم تقييمه بحسب قيمة الوقت الاضافي

وهذا الكود من اجل قراءة الوقت ك رقم وليس وقت
ولكن نقرأه مثلا 
سبعة وعشرين ساعة وسبع دقائق وثلاثين ثانية..  يعني اكثر من 24 ساعة 
في حال كود قراءة الوقت ك كلمات لا يمكن قراءة هذا الرقم لانه ليس وقت او زمن
بل اصبح ساعات عمل فيقرأ بكود التفقيط ...
وهذه الاوقات يتم اخذها من دفتر مراقب الدوام او جهاز البصمة وتسجيل الدخول والخروج...
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
تم الشكر بواسطة: foo , foo



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


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