تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] String was not recognized as a valid DateTime.
#1
String was not recognized as a valid DateTime.

هذا هو الكود اتمنى اصلاح الخطا

كود :
' String to DateTime
                Dim MyString As [String]
                MyString = rdlast.Text

                'MyString = "1999-09-01 21:34 p.m.";  //Depends on your regional settings
                Dim mystring2 As [String]
                mystring2 = tblasttime

                Dim MyDateTime As DateTime
                MyDateTime = New DateTime()
                MyDateTime = DateTime.ParseExact(MyString, "yyyy-MM-dd HH:mm tt", Nothing)

                Dim mydatetime2 As DateTime
                mydatetime2 = New DateTime()
                mydatetime2 = DateTime.ParseExact(mystring2, "yyyy-MM-dd HH:mm tt", Nothing)

                '_________________________________________________

                If MyDateTime > mydatetime2 Then
                    Image1.ImageUrl = "~/mgs/on.png"
                Else
                    Image1.ImageUrl = "~/mgs/off.png"
                End If

التنسيق المخزن بالقاعدة والموجود بالمتغيرين mydatetime و mydatetime2

هكذا
إقتباس :Sep 30 2013 9:11PM

مصدر الكود
http://www.codeproject.com/Articles/1474...ng-and-For
الرد }}}
تم الشكر بواسطة:
#2
مافيه احد عنده الحل؟؟
الرد }}}
تم الشكر بواسطة:
#3
السلام عليكم ورحمة الله وبركاته


هناك عدة نقاط

أولاً وجدت في التعليق الذي في المثال ".p.m" والمفروض بدون نقاط "pm"

ثانياً لاحظت التاريخ موجود بالصيغتين معا 12 و24 بدلالة pm والأحرف الكبيرة للساعة HH

ثالثاً الأمر ParseExact حساس جداً حتى بوجود مسافة زائدة، فهو يقوم بمطابقة تركيبتين أحداهما تكون المتغير والآخر الـ Format التي يفترض أن المتغير متطابق معها.
كود :
أعتقد بهذا يتضح معنى التطابق
"1999-09-01 21:34"
"    -  -     :  "
"yyyy-MM-dd HH:mm"

رابعاً الاعدادات الاقليمية ضرورية في بعض الدول ولا تترك Nothing

أخيراً أنظر هذا المثال (بعد إزالة tt الخاص بنظام 12 والاكتفاء بظام 24 من المتغير MyString) (يجب التأكد من تركيبتك الخاصة من حيث yyyy-MM-dd وليست yyyy/MM/dd للتاريخ)
كود :
Dim MyString As String
Dim MyDate As Date



MyString = "1999-09-01 21:34"
MyDate = Date.ParseExact(MyString, "yyyy-MM-dd HH:mm", New Globalization.CultureInfo("en-us"))

'Me.TextBox1.Text = MyDate.ToString(New Globalization.CultureInfo("en-us"))
Me.TextBox1.Text = MyDate.ToString("yyyy/MM/dd hh:mm tt", New Globalization.CultureInfo("en-us")) ' هنا حددت عرض الوقت بنظام 12



MyString = "1434-09-01 21:34"
MyDate = Date.ParseExact(MyString, "yyyy-MM-dd HH:mm", New Globalization.CultureInfo("ar-sa"))

'Me.TextBox2.Text = MyDate.ToString(New Globalization.CultureInfo("ar-sa"))
Me.TextBox2.Text = MyDate.ToString("yyyy/MM/dd hh:mm tt", New Globalization.CultureInfo("ar-sa")) ' هنا حددت عرض الوقت بنظام 12
جرب أن تضيف مسافة في آخر المتغير MyString أو تضع / بدلا من - وانظر ماذا يحدث




السلام عليكم ورحمة الله وبركاته
الرد }}}
تم الشكر بواسطة: سعود
#4
طيب اخوي ابورايد
اريد منك طريقة لحفظ التاريخ والوقت الحاليين بحيث اقارن بهن .
لاني تعبت لي سنة كاملة مع التاريخ والوقت .
الطريقة اللي استخدمها كالتالي:
كود :
Dim dt As Date = Date.Now
        Dim ts As DateTime
        ts = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(dt, TimeZoneInfo.Local.Id, "Arab Standard Time").ToString
واقوم بحفظ المتغير ts الى عمود من نوع varchar
واستقبل القيمة باداة تسمية
هل لديك اقتراح بتغيير طريقتي هذه لانه لا بد منها ان لم يكن حل آخر.
الرد }}}
تم الشكر بواسطة:
#5
السلام عليكم ورحمة الله وبركاته


أول شيء اعتمد تنسيق موحد للتاريخ والوقت ضعه في Module كالتالي
كود :
Module Module1

    ' "yyyy/MM/dd-HH:mm" التنسيق الموحد
    Public myDateFormat As String = "yyyy/MM/dd-HH:mm"

End Module


وعندما تريد حفظ التارخ والوقت فاستخدم التالي
كود :
Dim myDateNow As String = Now.ToString(myDateFormat, New Globalization.CultureInfo("en-us"))

الآن لديك الوقت والتاريخ الحالي بالشكل الموحد على هيئة نص، ويمكن حفظه في قاعدة البيانات، وطبق على المقارنة بشكل عادي وكأنك تقارن بين رقمين، يعني لو كان التاريخ لآخر رد في قاعدة البيانات rdlast حيكون كالتالي
كود :
Dim myDateNow As String = Now.ToString(myDateFormat, New Globalization.CultureInfo("en-us"))
If myDateNow > rdlast Then
    '
Else
    '
End If

يمكن تسأل لماذا أضع دائما New Globalization.CultureInfo أخبرك من أجل لو قمت بالتجربة على جهازك الخاص وكانت إعدادته السعودية تكون النتيجة سليمة أيضاً.


السلام عليكم ورحمة الله وبركاته
الرد }}}
تم الشكر بواسطة: سعود
#6
بارك الله فيك ورفع قدرك
الان لقد قمت بتغيير نوع العمود الى datetime وجعلت القيمة الافتراضية الدالة GETDATE()
لقد عرفت سازيل الدالة فقط GETDATE()
وبانتظار التعليق على النوع datetime

الان انظر ماذا فعلت هل صحيح ام لا
كود :
Public myDateFormat As String = "yyyy/MM/dd-HH:mm"

    Public Function mydate() As DateTime
        Dim myDateNow As String = Now.ToString(myDateFormat, New Globalization.CultureInfo("en-us"))
        Return myDateNow
    End Function
الرد }}}
تم الشكر بواسطة:
#7
السلام عليكم ورحمة الله وبركاته


بالنسبة لـ GETDATE سليمة وقد تكون الأفضل، ولكنها ستربكك إذا كنت تطور على جهازك الخاص باعدادت التاريخ فيها هجري

أما بالنسبة للدالة التي وضعتها فهي غير صحيحة، لأن الدالة تعيد DateTime وليس String في حيت أن ما بداخلها ينتج String وليس DataTime


السلام عليكم ورحمة الله وبركاته
الرد }}}
تم الشكر بواسطة:
#8
يعني التصحيح فقط اكتب as string
الرد }}}
تم الشكر بواسطة:
#9
(01-10-13, 11:41 PM)سعود كتب : يعني التصحيح فقط اكتب as string

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


نعم، وننتظر إبداعاتك...


السلام عليكم ورحمة الله وبركاته
الرد }}}
تم الشكر بواسطة: سعود
#10
حاولت اطبق الكود على اللي عندي ماضبط
يالله فزعتك
كود :
Dim tblasttime As String = ""
هذا متغير ليعرض اخر وقت للعضو
كود :
tblasttime = tbr.Item("lasttime")
الان اسندنا له القيمة

والتالي الكود
كود :
Dim tmember As String = tblasttime.ToString(myDateFormat, New Globalization.CultureInfo("en-us"))
يظهر خط ازرق
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] Unclosed quotation mark after the character string ''. سعود 0 1,915 06-10-13, 10:22 PM
آخر رد: سعود

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


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