قراءة الوقت بالكلمات العربية - Taha Okla - 15-04-23
السلام عليكم ورحمة الله وبركاته
هذا كود لتحويل الوقت لكلمات عربية
(الوقت المقروء من الساعة أو قاعدة بيانات مثلاً ،، وليس تفقيط للوقت وقت العمل المتراكم الذي يساوي عشرات الساعات، فذاك شيء آخر)
فقط اسند للدالة متغير من نوع وقت وتاريخ وهو سيقوم بإرجاع اللفظ العربي للوقت..
والآن أترككم مع الكود :
كود :
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)
RE: قراءة الوقت بالكلمات العربية - assuhimi - 15-04-23
جزيت كل الخير اخي ،، تم التعديل عليها بيشكل بسيط لتتلائم مع الوقت التراكمي ،، الف شكر لك على المساعدة
RE: قراءة الوقت بالكلمات العربية - assuhimi - 23-04-23
(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
RE: قراءة الوقت بالكلمات العربية - Taha Okla - 23-04-23
(23-04-23, 05:12 PM)assuhimi كتب : (15-04-23, 02:30 AM)Taha Okla كتب : السلام عليكم ورحمة الله وبركاته
هذا كود لتحويل الوقت لكلمات عربية
(الوقت المقروء من الساعة أو قاعدة بيانات مثلاً ،، وليس تفقيط للوقت وقت العمل المتراكم الذي يساوي عشرات الساعات، فذاك شيء آخر)
الاخ الكريم Taha تم عمل تعديل بسيط للحصول على الوقت التراكمي
المشكلة في الساعة 00 تصبح 12 فهل يمكنك المساعدة
لإني استخدمها لحساب الساعات ، مثل "ساعات التأخر" عندما تكون "00:10:00" يفترض ان تكون عشر دقائق فقط
شاكر ومقدر للجميع
تفقيط الوقت مختلف عن هذا الكود كثيراً
التشابه فقط مع الدقائق والثواني
أما الساعات فتفقط كما تفقط الأرقام الصحيحة
راجع هذا الموضوع :
كود لتفقيط الوقت التراكمي
RE: قراءة الوقت بالكلمات العربية - foo - 23-04-23
صراحة لم افهم الموضوع لعدم وجود مثال هلارة عن وقت ونتيجة مثل (1:35 الساعه الواحدة وخمسة وثلاثبن دقيقة) هل هذا هو المقصود؟
والاخ assuhimi عندما قال(تم التعديل عليها بيشكل بسيط لتتلائم مع الوقت التراكمي) ما المقصود بالتراكمي؟
للتو انتبهت بوجود موضوع اخر (كود لتفقيط الوقت التراكمي) وايضا لم استوعبه!
عموما ما الفائده من هذه الطريقة وفيم تستخدم (ياليت عدة امثله)؟
RE: قراءة الوقت بالكلمات العربية - Taha Okla - 24-04-23
(23-04-23, 11:22 PM)foo كتب : صراحة لم افهم الموضوع لعدم وجود مثال هلارة عن وقت ونتيجة مثل (1:35 الساعه الواحدة وخمسة وثلاثبن دقيقة) هل هذا هو المقصود؟
والاخ علي السحيمي عندما قال(تم التعديل عليها بيشكل بسيط لتتلائم مع الوقت التراكمي) ما المقصود بالتراكمي؟
للتو انتبهت بوجود موضوع اخر (كود لتفقيط الوقت التراكمي) وايضا لم استوعبه!
عموما ما الفائده من هذه الطريقة وفيم تستخدم (ياليت عدة امثله)؟
في هذا الموضوع سردنا كود لقراءة الوقت وأظن هذا مفهوم..
..
لكن في موضوع تفقيط الوقت
الكود من أجل حساب مجموع ساعات لعمل ما
مثلا ساعات العمل اليومية الرسمية هي 8 ساعات او 9 ساعات(ل ستة ايام من اسبوع او ل ثلاثة عشر يوما من اسبوعين) بحسب نوع المنشأة
فلو كان هناك زيادة عن ساعات العمل القانونية سيحتسب قيمة الوقت الاضافي
وهذا الوقت التراكمي فينا نجمعه شهريا
ويتم تقييمه بحسب قيمة الوقت الاضافي
وهذا الكود من اجل قراءة الوقت ك رقم وليس وقت
ولكن نقرأه مثلا
سبعة وعشرين ساعة وسبع دقائق وثلاثين ثانية.. يعني اكثر من 24 ساعة
في حال كود قراءة الوقت ك كلمات لا يمكن قراءة هذا الرقم لانه ليس وقت او زمن
بل اصبح ساعات عمل فيقرأ بكود التفقيط ...
وهذه الاوقات يتم اخذها من دفتر مراقب الدوام او جهاز البصمة وتسجيل الدخول والخروج...
|