【问题标题】:Different date time format of the user causing an error用户的不同日期时间格式导致错误
【发布时间】:2018-10-02 17:06:21
【问题描述】:

我的应用程序根据我的代码所基于的不同日期/时间格式在不同的安装时出错

例如下面的原始代码;

Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles DTPTarihSec.ValueChanged
    Dim BaslangicTarihi As Date
    Dim BitisTarihi As Date


    BaslangicTarihi = "16/04/1996" 'TCMB kayıtları en eski bu tarihe kadar
    BitisTarihi = Date.Today

    If hatasayac = False Then
        SecilenTarih = DTPTarihSec.Value
    End If

    hatasayac = False

    If (SecilenTarih > BitisTarihi) Then

        MsgBox("İleri tarihli kur bilgileri bulunmamaktadır. Lütfen uygun bir tarih giriniz. " & vbCrLf & vbCrLf &
               "Kurların geçerli olduğu en son tarihe yönlendirildiniz !", vbOKOnly + vbInformation, "TCMB Döviz Kurları")
        hatasayac = True
        If Now.DayOfWeek.ToString = "Cumartesi" Or Now.DayOfWeek.ToString = "Saturday" Then
            SecilenTarih = Date.Today.AddDays(-1)
            DTPTarihSec.Value = Date.Today.AddDays(-1)

        ElseIf Now.DayOfWeek.ToString = "Pazar" Or Now.DayOfWeek.ToString = "Sunday" Then
            SecilenTarih = Date.Today.AddDays(-2)
            DTPTarihSec.Value = Date.Today.AddDays(-2)

        Else
            SecilenTarih = Date.Today
            DTPTarihSec.Value = Date.Today

        End If


    End If

在其中一台用户计算机上出现以下错误;

您的应用程序中出现未处理的异常...如果您单击退出,应用程序将立即关闭。 来自“日期”类型的字符串“16/04/1996”的对话无效。

这是因为下面的代码行;

 BaslangicTarihi = "16/04/1996" 'TCMB kayıtları en eski bu tarihe kadar
BitisTarihi = Date.Today

If hatasayac = False Then
    SecilenTarih = DTPTarihSec.Value
End If 

但它在我的计算机上没有给出错误。

我的问题是关于;如何处理这个错误,这将阻止不同计算机上所有不同的日期和时间格式

【问题讨论】:

    标签: vb.net datetime datetime-format unhandled-exception string-to-datetime


    【解决方案1】:

    不要使用字符串来填充日期变量,使用日期。

    Dim BaslangicTarihi = New Datetime(1996, 04, 16)
    

    我建议你打开 Option Strict。

    此外,您应该正确使用 DayOfWeek 的枚举而不是字符串。

    If Now.DayOfWeek = Day​OfWeek.Saturday Then
    

    【讨论】:

    • 能否请您就问题提出建议,如何将用户日期/时间格式设置为与应用程序相同,以免出现进一步的错误?
    • @Ali 您的代码应该始终使用 Date 而不是字符串,这样您就永远不会遇到这个问题。至于显示,使用用户计算机格式是要走的路,因为他们决定要以这种格式约会。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    相关资源
    最近更新 更多