Vb.net 格式异常(字符串未被识别为有效的日期时间)

Vb.net 格式异常(字符串未被识别为有效的日期时间),vb.net,Vb.net,我不明白这个代码有什么问题: Date.ParseExact("9072019","dMMyyyy",CultureInfo.CurrentUICulture.DateTimeFormat).ToString("d/MM/yyyy") Dim dateStrings = {"9072019", "09072019", "10072019"} Dim formatStrings = {"dMMyyyy", "ddMMyyyy"} Dim d As Date For Each ds In dat

我不明白这个代码有什么问题:

Date.ParseExact("9072019","dMMyyyy",CultureInfo.CurrentUICulture.DateTimeFormat).ToString("d/MM/yyyy")
Dim dateStrings = {"9072019", "09072019", "10072019"}
Dim formatStrings = {"dMMyyyy", "ddMMyyyy"}
Dim d As Date

For Each ds In dateStrings
    For Each fs In formatStrings
        If Date.TryParseExact(ds, fs, Nothing, DateTimeStyles.None, d) Then
            Console.WriteLine("({0}, {1}) => {2:MMMM d, yyyy}", ds, fs, d)
        Else
            Console.WriteLine("({0}, {1}) => Invalid input", ds, fs)
        End If
    Next
Next
Dim dateStrings = {"9/07/2019", "09/07/2019", "10/07/2019"}
Dim formatStrings = {"d/MM/yyyy", "dd/MM/yyyy"}
Dim d As Date

For Each ds In dateStrings
    For Each fs In formatStrings
        If Date.TryParseExact(ds, fs, Nothing, DateTimeStyles.None, d) Then
            Console.WriteLine("({0}, {1}) => {2:MMMM d, yyyy}", ds, fs, d)
        Else
            Console.WriteLine("({0}, {1}) => Invalid input", ds, fs)
        End If
    Next
Next

我希望将整数值9072019转换为日期值9/07/2019

您应该确保有足够的字符表示任何日期。你一天只留下一个字符,但如果不是7月9日,而是7月10日呢?在第10-31天,您需要另一个以dd开头的格式字符串。因此,让我们先将字符串格式化为8个字符,然后使用适当的字符串

尺寸i=9072019 Dim s=i.toString G00000000'现在字符串看起来像09072019 Dim dt=Date.ParseExacts,dMMyyyy,CultureInfo.CurrentUICulture 在解析字符串之前,只需确保字符串中有8位数字@jmchilinney answer使用PadLeft i.ToString.PadLeft8,0c更优雅地实现了这一点。您的单个d格式字符串似乎没有问题

请参见代码中的

,9072019不是一个有效日期,因此您会收到如下错误:

字符串未被识别为有效的日期时间

要解决这个问题,你需要确保它是有效的;应该是09072019年

您可以使用该函数检查它是否有效

If IsDate("09072019") Then
   ' Date/DateTime works fine here...
   Date.ParseExact("09072019", "MMddyyyy", CultureInfo.InvariantCulture).ToString("dd/MM/yyyy")
End If

我不认为已经提供的任何一个答案实际上都解决了这个问题。查看此代码:

Date.ParseExact("9072019","dMMyyyy",CultureInfo.CurrentUICulture.DateTimeFormat).ToString("d/MM/yyyy")
Dim dateStrings = {"9072019", "09072019", "10072019"}
Dim formatStrings = {"dMMyyyy", "ddMMyyyy"}
Dim d As Date

For Each ds In dateStrings
    For Each fs In formatStrings
        If Date.TryParseExact(ds, fs, Nothing, DateTimeStyles.None, d) Then
            Console.WriteLine("({0}, {1}) => {2:MMMM d, yyyy}", ds, fs, d)
        Else
            Console.WriteLine("({0}, {1}) => Invalid input", ds, fs)
        End If
    Next
Next
Dim dateStrings = {"9/07/2019", "09/07/2019", "10/07/2019"}
Dim formatStrings = {"d/MM/yyyy", "dd/MM/yyyy"}
Dim d As Date

For Each ds In dateStrings
    For Each fs In formatStrings
        If Date.TryParseExact(ds, fs, Nothing, DateTimeStyles.None, d) Then
            Console.WriteLine("({0}, {1}) => {2:MMMM d, yyyy}", ds, fs, d)
        Else
            Console.WriteLine("({0}, {1}) => Invalid input", ds, fs)
        End If
    Next
Next
结果如下:

(9072019, dMMyyyy) => Invalid input (9072019, ddMMyyyy) => Invalid input (09072019, dMMyyyy) => July 9, 2019 (09072019, ddMMyyyy) => July 9, 2019 (10072019, dMMyyyy) => July 10, 2019 (10072019, ddMMyyyy) => July 10, 2019 (9/07/2019, d/MM/yyyy) => July 9, 2019 (9/07/2019, dd/MM/yyyy) => Invalid input (09/07/2019, d/MM/yyyy) => July 9, 2019 (09/07/2019, dd/MM/yyyy) => July 9, 2019 (10/07/2019, d/MM/yyyy) => July 10, 2019 (10/07/2019, dd/MM/yyyy) => July 10, 2019 (9072019, dMMyyyy) => July 9, 2019 (9072019, ddMMyyyy) => July 9, 2019 (09072019, dMMyyyy) => July 9, 2019 (09072019, ddMMyyyy) => July 9, 2019 (10072019, dMMyyyy) => July 10, 2019 (10072019, ddMMyyyy) => July 10, 2019 结果如下:

(9072019, dMMyyyy) => Invalid input (9072019, ddMMyyyy) => Invalid input (09072019, dMMyyyy) => July 9, 2019 (09072019, ddMMyyyy) => July 9, 2019 (10072019, dMMyyyy) => July 10, 2019 (10072019, ddMMyyyy) => July 10, 2019 (9/07/2019, d/MM/yyyy) => July 9, 2019 (9/07/2019, dd/MM/yyyy) => Invalid input (09/07/2019, d/MM/yyyy) => July 9, 2019 (09/07/2019, dd/MM/yyyy) => July 9, 2019 (10/07/2019, d/MM/yyyy) => July 10, 2019 (10/07/2019, dd/MM/yyyy) => July 10, 2019 (9072019, dMMyyyy) => July 9, 2019 (9072019, ddMMyyyy) => July 9, 2019 (09072019, dMMyyyy) => July 9, 2019 (09072019, ddMMyyyy) => July 9, 2019 (10072019, dMMyyyy) => July 10, 2019 (10072019, ddMMyyyy) => July 10, 2019 结果如下:

(9072019, dMMyyyy) => Invalid input (9072019, ddMMyyyy) => Invalid input (09072019, dMMyyyy) => July 9, 2019 (09072019, ddMMyyyy) => July 9, 2019 (10072019, dMMyyyy) => July 10, 2019 (10072019, ddMMyyyy) => July 10, 2019 (9/07/2019, d/MM/yyyy) => July 9, 2019 (9/07/2019, dd/MM/yyyy) => Invalid input (09/07/2019, d/MM/yyyy) => July 9, 2019 (09/07/2019, dd/MM/yyyy) => July 9, 2019 (10/07/2019, d/MM/yyyy) => July 10, 2019 (10/07/2019, dd/MM/yyyy) => July 10, 2019 (9072019, dMMyyyy) => July 9, 2019 (9072019, ddMMyyyy) => July 9, 2019 (09072019, dMMyyyy) => July 9, 2019 (09072019, ddMMyyyy) => July 9, 2019 (10072019, dMMyyyy) => July 10, 2019 (10072019, ddMMyyyy) => July 10, 2019 2019年7月9日是7月9日还是9月7日?在代码9072019中,dMMyyyy使它看起来像7月9日。根据我当地的标准美国,2019年7月9日将改为9月7日。因此,你的问题有些含糊不清,需要澄清一下。下面的答案是不同的解释。