View Full Version : صحت ورود تاریخ شمسی
  
amir_vb2005
پنج شنبه 02 خرداد 1392, 22:50 عصر
با سلام خدمت تمامی دوستان عزیز:
میخواستم بدونم چطور در VB.NET از صحت ورود تاریخ شمسی مطمئن شم. چون من برنامه در حال نوشتن دارم که در آن باید کاربر تاریخ را به صورت شمسی وارد کند و اگر تاریخ وارده درست نباشد مثلا تاریخ "1392/25/50" را وارد کند برنامه پیامی مبنی بر نادرست بودن تاریخ وارده بدهد. لطفا من را راهنمایی کنید .
با تشکر:خجالت::متفکر::گریه:
h_a_m_i_d
جمعه 03 خرداد 1392, 00:10 صبح
دوست عزیز خیلی راحت هست اگه  توضیحاتم رو متوجه نشدی بگو برات سورس بذارم
1-از masktextbox استفاده میکنی 
2-مقدار text اونو میگیری 
3-خوب دیگه حالا چهار رقم اول میشه سال که شرط میذاری براش بین دو تا عدد بخصوص باشه و همینطور به بعد
shahryari
جمعه 03 خرداد 1392, 13:28 عصر
سلام (تابع تست تاریخ شمسی)
این تابع را به کدهاتون اضافه کنید
    Public Function date_tester(ByVal a As String) As Boolean
        Dim i As Integer
        Dim b As Boolean
        i = 0
        Try
            b = True
            i = Val(Microsoft.VisualBasic.Right(a, 2))
            If i > 31 Or i = 0 Then
                b = False
                GoTo 100
            End If
            i = Val(Microsoft.VisualBasic.Mid(a, 4, 2))
            If i > 12 Or i = 0 Then
                b = False
                GoTo 100
            End If
        Catch ex As Exception
        End Try
100:    Return b
    End Function
این تابع یک پارامتر از نوع استریگ میگیرد مثال "1391/01/01" مقدار صحیح بودنش را بعنوان بولین برمیگرداند
مثال:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MsgBox(date_tester(TextBox1.Text))
    End Sub
موفق و پیروز باشید
amir_vb2005
شنبه 04 خرداد 1392, 21:45 عصر
ممنونم دوست عزیز
محمد آشتیانی
یک شنبه 05 خرداد 1392, 13:37 عصر
سلام
اگه فرمت تاریخ مورد استفادت YYYY/MM/DD باشه میتونی از تابع IsDate خود دات نت استفاده کنی،  مقدار برگشتی تابع هم Boolean هست.
vb341
یک شنبه 05 خرداد 1392, 22:23 عصر
راه ساده تر استفاده از Shamsi.dll  هست . تو پروژه Import  کنید و باهاش راحت مقادیر تاریخ رو چک کنید
vb341
یک شنبه 05 خرداد 1392, 22:26 عصر
از این روش هم میتونین استفاده کنید 
Public Function CheckDate(ByVal T As String) As Boolean
        Try
            Dim s1 As Integer
            Dim s2 As Integer
            Dim s3 As Integer
            Dim s4 As Integer
            s1 = Microsoft.VisualBasic.Mid(t, 6, 1)
            s2 = Microsoft.VisualBasic.Mid(t, 6, 2)
            s3 = Microsoft.VisualBasic.Mid(t, 9, 1)
            s4 = Microsoft.VisualBasic.Mid(t, 9, 2)
            If s2 = 0 Then Return False
            If s2 > 6 And s4 > 30 Then
                Return False
            End If
            If s4 = 0 Then
                Return False
            End If
            If s1 > 1 Or s2 > 12 Or s3 > 3 Or s4 > 31 Then
                Return False
            Else
                Return True
            End If
        Catch ex As System.Exception
            Return False
        End Try
    End Function
الیته زحمت این کد رو دوست عزیزم شهریار کشیدن .
sh
یک شنبه 19 خرداد 1392, 10:53 صبح
از امکانات خود دات نت هم میشه استفاده کرد
فرض کنید یک maskedtextbox با پروپرتی های زیر داریم
 masked.Mask = "9999/99/99"
            masked.PromptChar = " "
یک تابع برای ارزیابی تاریخ :
Public Function validation(ByVal Pdate As String) As Boolean
            Try
                Dim pc As New Globalization.PersianCalendar
                Dim spliter() As String
                spliter = Split(Pdate, "/")
                Return IsDate(pc.ToDateTime(spliter(0), spliter(1), spliter(2), 0, 0, 0, 0))
            Catch ex As Exception
                Return False
            End Try
        End Function
حالا در رویداد validation می نویسیم :
 Private Sub masked_Validating(sender As Object, e As CancelEventArgs) Handles Me.Validating
                 
            If validation(masked.Text) = False Then
                MessageBox.Show("لطفاً تاریخ را بصورت صحیح وارد نمائید" )
                e.Cancel = True
            End If
        End Sub
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.