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

مشكلة في حفظ التاريخ في متغير من نوع Date

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

الاخوه الكرام

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

هناك بعض المشاكل في التعامل مع التواريخ

1- عند حفظ تاريخ في متغير من نوع ( date ) و يكون اعدادات الجهاز انه يتم ادخال اليوم اولا ثم الشهر ثم السنة اما اذا نقلت البرنامج على جهاز آخر يكون اعدادات التريخ فيه هي الشهر اولا ثم اليوم ثم السنة يحدث خطء ، فكيف اتفادي هذا الخطء بمعني اخر اذا شغلت البرنامج على جهاز اعدادات التاريخ ( dd-mm-yyy) او كانت الاعدادات ( mm-dd-yyyy ) فلا يحدث خطء كيف اتفادي اعدادات الجهاز التي يمكن ان تكون كده او كده

2 - عند انشاء متغير من نوع ( date ) فما هي القيمة الافتراضية التي سوف يأخذها لكي اجعل المتغير فارغ مثل ما افعل في المتغير من نوع Integer بضع القيمة الافتراضية صفر و مثل المتغير من نوع String اضع القيمة الافتراضية ( "" ) فارغ اما من نسبة للتاريخ فماذا اكتب.

افيدونا افادكم الله

شكرا لاهتمامكم

#2

عليك استخدام الداله format وذلك قبل حفظ القيمه في المتغير

اي يتم تحويل الصيغه الي dd/mm/YYYY

او الي القيمة mm/dd/YYY

وذلك قبل حفظه في متغير

#3

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

 Dim t As New Date
		t = Date.Now
		MsgBox(t.ToString("s"))
		MsgBox(t.ToString("y/m/d"))
#4

الاخوه الكرام

شكرا لاهتمامكم

ولكن هذا الكود بيعطي نتائج غير مفهومة انظر الكود

		 Dim t As New Date
		t = Date.Now
		MsgBox(t.ToString("s")) ' =  2008-10-02T07:39:51
		MsgBox(t.ToString("y/m/d")) ' = 8/39/2
#5

هذا الكود لعدم الارتباط بالاعدادات الاقليمية لأي جهاز t.tostring("s")f كما لاحظت يعرض التاريخ الميلادي مع أن إعدادات الجهاز عندي على الهجري مثلاً وأيضاً إن أردت تنسيق طريقة عرض الوقت والتاريخ بنفسك استخدم هذه الطريقة وأيضاً يمكنك استخدام

Dim d As New Date(2008, 5, 25)
			MsgBox(d.ToString("MM/dd/yyyy"))
			Dim teststr As String
			teststr = Format(d, "dd/MM/yyyy")
			MsgBox(teststr)

و

اقتباس
MsgBox(t.ToString("s")) ' = 2008-10-02T07:39:51

راجع هذا الرابط (http://msdn.microsoft.com/en-us/library/59bz1f0h(VS.80).aspx) في مستندات msdn

sيرمز إلى الولايات المتحدة الامريكية

#6
الراس الكبير كتب:
الاخوه الكرام

شكرا لاهتمامكم

ولكن هذا الكود بيعطي نتائج غير مفهومة انظر الكود

		 Dim t As New Date
		t = Date.Now
		MsgBox(t.ToString("s")) ' =  2008-10-02T07:39:51
		MsgBox(t.ToString("y/m/d")) ' = 8/39/2

انتبه عندما تستخدم الحرف m هنا الحرف m لايساوي الحرف M لأنه واحد للدقائق والثاني للشهر تأكد مما تريد حتى تحصل على النتيجة التي تريدها

الساهر24 كتب:
sيرمز إلى الولايات المتحدة الامريكية

الصحيح هو أن الحرف s يرمز لتنسيق التاريخ القصير حسب الإعدادات الإقليمية للجهاز

انظر الرابط http://msdn.microsoft.com/en-us/library/362btx8f(VS.80).aspx

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#7

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

شكرا على التوضيح للاخ ( الساهر24 )

شكرا للاخ ( محمد سامر )

فعلا اختلاف ( m و M ) كان غائب عني

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

#8

الأمر Format أو ToString يعيد قيمة التاريخ بحسب ال Current Application Culture وبالتالي فقد يعيد قيمة بالتاريخ الهجري بينما نريد نحن أن نخزن التاريخ في قاعدة البيانات بالميلادي.

ولذلك يمكن استخدام مايلي لكي يعيد الأمر ToString قيمة التاريخ دائماً بالميلادي:

Date.Now.ToString("MM/dd/yyyy", System.Globalization.CultureInfo.InvariantCulture)

محمد حمود

ماجستير تقنية المعلومات

بكالوريوس هندسة مدنية

محترف إدارة مشاريع (PMP)

مهندس جودة البرمجيات (CSQE)

مبرمج معتمد من مايكروسوفت (MCP)

متخصص في نظم المعلومات الجغرافية GIS

mohamed.hammod(at)gmail.com

www.ShapeViewer.com

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

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

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

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

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