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

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

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

أرجو المساعدة
وعليكم السلام ورحمة الله وبركاته.

يمكنك استخدام مكتبة الوقت (Datetime) في لغة البرمجة التي تستخدمها لعرض التاريخ الهجري. في معظم اللغات الشائعة، توفر هذه المكتبة دعمًا للتحويل بين التقويمين الميلادي والهجري.

وفيما يلي مثال بسيط باستخدام Python:

import datetime
import hijri_converter

today = datetime.datetime.today().date()
hijri_date = hijri_converter.Gregorian(today.year, today.month, today.day).to_hijri()
print("التاريخ الهجري:", hijri_date)



يتم استخدام datetime.datetime.today() للحصول على التاريخ والوقت الحاليين، ثم يتم استخدام hijri_converter.Gregorian() لتحويل التاريخ الميلادي إلى التاريخ الهجري، وأخيرًا يتم طباعة التاريخ الهجري باستخدام print().

يرجى ملاحظة أنه قد يكون هناك اختلاف في طريقة التحويل بين لغة البرمجة المختلفة، وقد تتطلب بعض اللغات استخدام مكتبات إضافية.
شكرا جزيلا لاهتمامكم و لكن ماذا عن الكود بلغة VB.NET ؟
هل يمكنك إعطائى مثالا لذلك ؟
بالطبع، أستطيع توفير مثال بلغة VB.NET. يمكنك إستخدام الكود التالي لعرض التاريخ الهجري:

كود :
Imports System
Imports NodaTime
Imports NodaTime.Calendars

Module Module1
Sub Main()
Dim hijriCalendar = HijriCalendar.IslamicCivil
Dim today = SystemClock.Instance.GetCurrentInstant().InUtc().ToDateTimeUtc().Date
Dim hijriDate = hijriCalendar.GetYearMonthDay(today)
Console.WriteLine("التاريخ الهجري: " & hijriDate.Year & "/" & hijriDate.Month & "/" & hijriDate.Day)
Console.ReadLine()
End Sub
End Module

هنا يتم استخدام NodaTime و NodaTime.Calendars لتحويل التاريخ الميلادي إلى التاريخ الهجري. تستخدم الدالة hijriCalendar.GetYearMonthDay(today) لتحويل التاريخ الميلادي إلى التاريخ الهجري وأخيرًا يتم طباعة التاريخ الهجري باستخدام Console.WriteLine().

هذا هو الكود الذي ستستخدمه لعرض التاريخ الهجري بلغة VB.NET. على الرغم من أنه يعمل بشكل صحيح، قد تحتاج إلى التعديل عليه بحسب متطلبات التطبيق الخاص بك. هناك بعض المكتبات الأخرى التي يمكن أن تساعد في التحويل بين التقويمين، كما يمكن أن تكون هناك طريقة أخرى للقيام بهذا المهمة بلغة VB.NET. ومع ذلك، يعتبر هذا الكود مثالًا على كيفية عرض التاريخ الهجري في VB.NET.
ولكن الفضاء nodatime لا يوجد فهل علينا إضافة refrence معين؟
ولكن الفضاء nodatime لا يوجد فهل علينا إضافة refrence معين؟
وعليكم السلام ورحمة الله وبركاته

لا تحتاج أن تستخدم أي مكتبات خارج نطاق الدوت نت..
فقط ما تحتاجه حيلة بسيطة، أن تطلب التاريخ بإعدادت دولة معينة..

مثلاً : نعرف أن السعودية تعتمد التاريخ الهجري، لذا سنقوم بطلب التاريخ بحسب إعدادات المملكة..
- استيراد المكتبة : 
كود :
Imports System.Globalization

- ثم الكود، ((لأجل التبسيط حولنا الكود لفانكشن عام)) يقوم بالعملية بمجرد استدعاءه دون الحاجة لتكرر الأكواد :
كود :
Public Function GetHijriDate(pDate As DateTime) As String
   Dim ci As CultureInfo = CultureInfo.GetCultureInfo("ar-SA")
   Return pDate.ToString("yyyy/MM/dd", ci)
End Function

- طريقة الاستدعاء : نسند لـ اللفانكشن متغير من نوع (DateTime) ..
مثلا تاريخ اليوم بالهجري سيكون : 
كود :
Label1.Text = GetHijriDate(Today)


وفقك الله ..
نعم، عذرًا على عدم التوضيح. لاستخدام مكتبة NodaTime في مشروع VB.NET، يجب عليك تثبيت الحزمة أولاً. يمكنك تثبيت حزمة NodaTime باستخدام NuGet Package Manager.
لتثبيت الحزمة عبر NuGet Package Manager Console، اتبع الخطوات التالية:
  1. في بيئة Visual Studio، انقر فوق "Tools" ثم اختر "NuGet Package Manager" وبعد ذلك انقر فوق "Package Manager Console".
  2. قم بكتابة الأمر التالي في Package Manager Console واضغط على Enter:
 


PHP كود :
Install-Package NodaTime 



  1. 3. بعد تثبيت الحزمة بنجاح، سيتم إضافة مرجع لمكتبة NodaTime إلى مشروعك تلقائيًا.4. الآن يمكنك استخدام مكتبة NodaTime في كود VB.NET الخاص بك.
بعد تثبيت الحزمة، يجب أن يعمل الكود الذي قدمته بشكل صحيح لعرض التاريخ الهجري.
 


(28-03-23, 09:30 AM)Taha Okla كتب : [ -> ]وعليكم السلام ورحمة الله وبركاته

لا تحتاج أن تستخدم أي مكتبات خارج نطاق الدوت نت..
فقط ما تحتاجه حيلة بسيطة، أن تطلب التاريخ بإعدادت دولة معينة..

مثلاً : نعرف أن السعودية تعتمد التاريخ الهجري، لذا سنقوم بطلب التاريخ بحسب إعدادات المملكة..
- استيراد المكتبة : 
كود :
Imports System.Globalization

- ثم الكود، ((لأجل التبسيط حولنا الكود لفانكشن عام)) يقوم بالعملية بمجرد استدعاءه دون الحاجة لتكرر الأكواد :
كود :
Public Function GetHijriDate(pDate As DateTime) As String
   Dim ci As CultureInfo = CultureInfo.GetCultureInfo("ar-SA")
   Return pDate.ToString("yyyy/MM/dd", ci)
End Function

- طريقة الاستدعاء : نسند لـ اللفانكشن متغير من نوع (DateTime) ..
مثلا تاريخ اليوم بالهجري سيكون : 
كود :
Label1.Text = GetHijriDate(Today)


وفقك الله ..



أحسنت! هذا الأسلوب يستخدم مكتبة الثقافة واللغة المدمجة (System.Globalization) في .NET للحصول على التاريخ الهجري بناءً على إعدادات الثقافة الخاصة بالسعودية، والتي تعتمد التاريخ الهجري. إليك توضيح الكود المقدم:
  1. قم باستيراد مكتبة System.Globalization:
 
PHP كود :
Imports System.Globalization 


  1. 2.يتم إنشاء دالة GetHijriDate لتحويل تاريخ DateTime إلى تاريخ هجري وتحويله إلى نص:
PHP كود :
Public Function GetHijriDate(pDate As DateTime) As String
   Dim ci 
As CultureInfo CultureInfo.GetCultureInfo("ar-SA")
 
  Return pDate.ToString("yyyy/MM/dd"ci)
End Function 


  1. 3.استخدم الدالة للحصول على تاريخ اليوم بالتقويم الهجري وعرضه في عنصر واجهة المستخدم (مثل Label) كما يلي:

PHP كود :
Label1.Text GetHijriDate(Today



هذا الأسلوب لا يتطلب تثبيت مكتبات خارجية ويعتمد على المكتبات المدمجة في .NET Framework. إذا كنت تفضل استخدام هذا الأسلوب، يمكنك تجاهل تثبيت مكتبة NodaTime واستخدام الكود المقدم أعلاه.
شكرا جزيلا
(26-03-23, 02:04 PM)sanyor77 كتب : [ -> ]بالطبع، أستطيع توفير مثال بلغة VB.NET. يمكنك إستخدام الكود التالي لعرض التاريخ الهجري:

كود :
Imports System
Imports NodaTime
Imports NodaTime.Calendars

Module Module1
Sub Main()
Dim hijriCalendar = HijriCalendar.IslamicCivil
Dim today = SystemClock.Instance.GetCurrentInstant().InUtc().ToDateTimeUtc().Date
Dim hijriDate = hijriCalendar.GetYearMonthDay(today)
Console.WriteLine("التاريخ الهجري: " & hijriDate.Year & "/" & hijriDate.Month & "/" & hijriDate.Day)
Console.ReadLine()
End Sub
End Module

هنا يتم استخدام NodaTime و NodaTime.Calendars لتحويل التاريخ الميلادي إلى التاريخ الهجري. تستخدم الدالة hijriCalendar.GetYearMonthDay(today) لتحويل التاريخ الميلادي إلى التاريخ الهجري وأخيرًا يتم طباعة التاريخ الهجري باستخدام Console.WriteLine().

هذا هو الكود الذي ستستخدمه لعرض التاريخ الهجري بلغة VB.NET. على الرغم من أنه يعمل بشكل صحيح، قد تحتاج إلى التعديل عليه بحسب متطلبات التطبيق الخاص بك. هناك بعض المكتبات الأخرى التي يمكن أن تساعد في التحويل بين التقويمين، كما يمكن أن تكون هناك طريقة أخرى للقيام بهذا المهمة بلغة VB.NET. ومع ذلك، يعتبر هذا الكود مثالًا على كيفية عرض التاريخ الهجري في VB.NET.
كود ملئ بالأخطاء