الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Now.tostring تظهر التاريخ بالهجري في مشروع واحد فقط؟؟

بدأه sscvbnm في 10 ديسمبر 2008 · 5 رد · 705 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه

تقبل الله طاعتكم وكل عام وأنتم بخير..

عندي مشكلة ظهرت فجأة ولم أعرف لماذا..

التاريخ يظهر بالهجري عندما أحوله إلى string رغم أن أصله بالميلادي..

يعني لما أكتب Now وأتفحصه في وضع الDebug يظهر بالميلادي فقط لما أضع له .tostring يقلب للهجري.

حتى لو خصصت الصيغة ضمن .tostring تبقى تظهر بالهجرية..

وهذا فقط في مشروع واحد باقي الProjects يظهر فيها بالميلادي مثل العادة؟؟

أستخدم دوت نت 2008 والمشروع يحزم على .NetFramework 2.0

التاريخ في الإعدادات الإقليمية إفتراضياً بالميلادي وكل شيء صحيح!

هل من حل؟

(ربما الكمبيوتر نعسان)

جزاكم الله خيراً

تم تعديل هذه المشاركة بواسطة sscvbnm في 10 ديسمبر 2008 في 23:29

قال صلى الله عليه وسلم: من قال إذا أصبح: رضيت بالله ربا وبالإسلام دينا وبمحمد نبيا فأنا الزعيم لآخذن بيده حتى أدخله الجنة. الصحيحة/2686

#2

بســم الله الـرحمــن الرحيــم

السلام عليكــم ورحمـة الله وبركاتــه

حسب ما أعتقد والله أعلم إن لغة الجهاز والدولة في إعدادات الويندوز لها علاقة ....

حاول ان تغير اللغة ...

وفقك الله ...

سبحان الله وبحمده سبحان الله العظيم

لا تنسونا من صالح دعائكم ...

وفقكم الله وسدد خطاكم ...

#3

السلام عليكم

جزاك الله خيرا أخي الكريم..

الحمد لله عرفت سبب المشكلة والحل، ولكن لم أفهم لماذ؟

السبب هو أنني أستخدم هذا الكود للتحويل من التاريخ الميلادي إلى الهجري وبالعكس ولكن في قسم آخر من البرنامج:

	Public Function GregorianToHijri(ByVal Year As Integer, ByVal Month As Integer, ByVal Day As Integer) As DateTime
		Try
			Dim Ar As Globalization.CultureInfo = New Globalization.CultureInfo("ar-ae")
			System.Threading.Thread.CurrentThread.CurrentCulture = Ar
			Ar.DateTimeFormat.Calendar = New Globalization.GregorianCalendar
			GregorianToHijri = New DateTime(Year, Month, Day, Ar.DateTimeFormat.Calendar)
			Ar.DateTimeFormat.Calendar = New Globalization.HijriCalendar
		Catch ex As Exception
			ex = Nothing
		End Try
	End Function

	Public Function HijriToGregorian(ByVal Year As Integer, ByVal Month As Integer, ByVal Day As Integer) As DateTime
		Try
			Dim Ar As Globalization.CultureInfo = New Globalization.CultureInfo("ar-SY")
			System.Threading.Thread.CurrentThread.CurrentCulture = Ar
			Ar.DateTimeFormat.Calendar = New Globalization.HijriCalendar
			HijriToGregorian = New DateTime(Year, Month, Day, Ar.DateTimeFormat.Calendar)
			Ar.DateTimeFormat.Calendar = New Globalization.GregorianCalendar
		Catch ex As Exception
			ex = Nothing
		End Try
	End Function

يعني أنا أستخدم الكود للتحويل من الميلادي إلى الهجري في قسم بعيد من البرنامج وليس له علاقة بsub الذي أضع فيه Now.tostring فتظهر خطأ! بل في مكان آخر فلم أفهم ما علاقته بباقي البرنامج؟!

مجرد ما تم استدعاؤه مرة واحد يصبح كامل البرنامج يحول إلى الهجري مباشرة..

والحل طبعاً هو استخدام الجزء للتحويل إلى الميلادي بعد الانتهاء من التحويل إلى الهجري كالتالي:

		'''''إرجاع تعامل الثرد مع التاريخ الميلادي
		Dim Ar As Globalization.CultureInfo = New Globalization.CultureInfo("ar-ae")
		System.Threading.Thread.CurrentThread.CurrentCulture = Ar
		Ar.DateTimeFormat.Calendar = New Globalization.GregorianCalendar
		'========================================

أتوقع أن السبب في السطر الثاني من الكود، والله أعلم..

لو في أحد يستطيع أن يوضح لي سبب هذه المشكلة فجزاكم الله خيراً

والسلام عليكم

قال صلى الله عليه وسلم: من قال إذا أصبح: رضيت بالله ربا وبالإسلام دينا وبمحمد نبيا فأنا الزعيم لآخذن بيده حتى أدخله الجنة. الصحيحة/2686

#4

ببساطة تخيل ان ما يقابل هذه الجملة

Dim Ar As Globalization.CultureInfo = New Globalization.CultureInfo("ar-ae")
		System.Threading.Thread.CurrentThread.CurrentCulture = Ar

هو تغير اعدادات الجهاز الموجودة في ال Regional and Language option لأعدادت الخاصة باللغة والتاريخ لدولة الامارات المتحدة

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

Ar.DateTimeFormat.Calendar = New Globalization.HijriCalendar

الحل هو بانشاء culture خاصة بك باستخدامات التحويل حتى لا تقوم بتغير اعدادات الجهاز الحالية ..

تم تعديل هذه المشاركة بواسطة أم العبد في 13 ديسمبر 2008 في 06:48

#5

استخدم كود كالاتي .. وتأكد من صحته

 Public Function GregorianToHijri2(ByVal Year As Integer, ByVal Month As Integer, ByVal Day As Integer) As DateTime
		Try
			Dim MyCulture As New Globalization.CultureInfo("ar-ae")
			Dim MyRegion As New Globalization.RegionInfo("ar-ae")
			MyCulture.DateTimeFormat.Calendar = New Globalization.GregorianCalendar

			GregorianToHijri2 = New DateTime(Year, Month, Day, MyCulture.DateTimeFormat.Calendar)
			MyCulture.DateTimeFormat.Calendar = New Globalization.HijriCalendar
			GregorianToHijri2 = New DateTime(Year, Month, Day, MyCulture.DateTimeFormat.Calendar)

		Catch ex As Exception
			ex = Nothing
		End Try
	End Function
#6

السلام عليكم

جزاك الله خيراً..

حاولت تغيير الكودبنفس الطريقة من قبل ووصلت إلى نتيجة خطأ؛ وأيضاً استخدمت الكود الذي كتبتيه أعلاه وكانت النتيجة خطأ؛ فتاريخ اليوم مثلاً يظهر فيه بعد التحويل بتاريخ: 15/09/2570

رغم أنه فعلياً لا يؤثر على بقية البرنامج ولا يسبب تحويل التاريخ للهجري..

لكن تبقى النتيجة حتى الآن غير صحيحة..

جزاكم الله خيراً

والسلام عليكم

تم تعديل هذه المشاركة بواسطة sscvbnm في 14 ديسمبر 2008 في 01:14

قال صلى الله عليه وسلم: من قال إذا أصبح: رضيت بالله ربا وبالإسلام دينا وبمحمد نبيا فأنا الزعيم لآخذن بيده حتى أدخله الجنة. الصحيحة/2686

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…