2016-04-12 23 views
3

以下行給了我一個錯誤「字符串沒有被有效的DateTime認可」:爲什麼這個DateTime.ParseExact語句不工作?

DateTime.ParseExact("4/6/2016", "dd/MM/yyyy", Nothing) 

我得到了這個計算器「工作」的例子,但它並沒有爲我工作:Parse Exact Sample可以和我不知道爲什麼。

編輯(reedit,我錯誤地鍵入了最後兩次嘗試錯誤): 仍然沒有好處。這是我嘗試了迄今爲止提交的所有建議後所發現的(謝謝大家)。一些更多的信息,日期字符串來自文本框控件。

Dim xxx As String = "4/6/2016" 'OR = "04/06/2016" as necessary for the sample  

這不起作用:

DateTime.ParseExact(xxx, "M/d/yyyy", CultureInfo.InvariantCulture) 

這不起作用:

DateTime.ParseExact(xxx, "MM/dd/yyyy", CultureInfo.InvariantCulture) 

後,我試圖用的東西只是簡單DateTime.Parse:

DateTime.ParseExact(xxx) 

我用手輸入了這個。我不是從一個文本框控件中使用值和它的工作:

DateTime.Parse("4/6/‎2016‎") 

這麼折騰

+2

也許如果你試試這種方式:'DateTime.ParseExact(「04/06/2016」,「dd/MM/yyyy」,Nothing)'..... – Hackerman

+2

結論:你的文本框中的值不是什麼你手工輸入 - 使用調試器來查看正在使用的值。例如,你確定它是M/d/yyyy而不是d/M/yyyy嗎? –

回答

6

您的格式說,你將有兩位數的日,月。您的實際值只有一位數字。

你有兩個選擇:

  • 按照您指定的格式,例如: 04/06/2016
  • 更改格式以匹配值,例如d/M/yyyy

此外 - 並單獨 - 你正在傳遞Nothing的格式提供,這意味着目前的文化將被使用。您的格式使用/這是文化特定的日期分隔符。如果您當前的文化不使用/作爲日期分隔符,那是另一個問題。如果您使用的是固定格式,則可能需要指定CultureInfo.InvariantCulture作爲格式說明符。

下面是一個簡短但完整的程序,證明它的工作:

Option Strict On 

Imports System 
Imports System.Globalization 

Public Class Test 

    Shared Sub Main() 
     Dim xxx As String = "4/6/2016" 
     Dim result as DateTime = DateTime.ParseExact(xxx, "M/d/yyyy", CultureInfo.InvariantCulture) 
     Console.WriteLine(result) 
    End Sub 

End Class 
+0

請參閱編輯 –

+1

@CarlosMendieta:'DateTime.ParseExact(xxx,「M/d/yyyy」,CultureInfo.InvariantCulture)'適合我。什麼*究竟*你的意思是「不起作用」?理想情況下,展示一個[mcve]展示問題。這聽起來像你的文本框實際上並沒有你認爲它的字符串... –

+1

@CarlosMendieta:我現在包括一個簡短但完整的程序只是複製和粘貼你聲稱不工作的代碼,並把它們放在'Main'方法中。它工作正常。這聽起來像什麼不適合你*不是你所顯示的。 –

1

當您使用ddMM,預計兩位數,所以你需要使用"04/06/2016"或者更換他們與他們的個位數字版本的dM

+0

請參閱編輯 –

相關問題