如何在 vb.net 中轉換日期格式?
我得到的 xml 響應日期格式字元串是“MM/dd/yyyy h:mm:ss a”,但我需要轉換其他日期格式“”dd MMM yy HH:mm“”。
如何在 vb.net 中轉換日期格式?請給我任何建議。
假設您想將 xml 字元串值轉換為適當的
DateTime變數,Net 有很多方法可以做到這一點:' a date value in the string format specified: Dim xmlDate As String = "07/15/2014 7:07:33 AM" ' create a DATE variable from that string in a known format: Dim newDate As Date = DateTime.ParseExact(xmlDate, "MM/dd/yyyy h:mm:ss tt", Globalization.CultureInfo.InvariantCulture)一旦你有了一個實際的日期變數,你就可以用任何需要的格式來顯示它。這樣做不會更改基礎日期值,只會更改輸出樣式:
Dim myDt As DateTime = DateTime.Now Console.WriteLine(mydt.ToString("dd MMM yy HH:mm tt")) Console.WriteLine(mydt.ToString("MM/dd/yyyy h:mm:ss"))
DateTime類型是一個值;它們沒有格式。格式用於我們如何向人類顯示數據(如上.ToString()所示)以及我們如何在將人類的文本數據解析為變數DataTime時告訴模式預期。DateTime使用許多 VB 函式時必須小心。有些根本不創建日期類型,只是新的字元串變數。
CDate當使用來自其他文化的日期字元串時可能會特別成問題。它假定字元串是目前區域性格式,但情況可能並非如此。這可能導致08/07/yyyy轉換為07/08/yyyy.從原始問題:
I am getting xml response date format string is "MM/dd/yyyy h:mm:ss a"來自評論:
xml returning date format is "7/8/2014 12:00:00 PM"問題中指定的格式與評論中發布的範例不匹配。xmlDate 文本實際上是
M/d/yyyy格式,而不是MM/dd/yyyy!使用ParseExact意味著我們給出DateTime了期望的確切格式。當格式與實際的字元串模式不匹配時,它將失敗:Dim actualDate As Date Dim xmlTest As String = "7/8/2014 12:00:00 PM" actualDate = DateTime.ParseExact(xmlSource, "MM/dd/yyyy h:mm:ss tt", Globalization.CultureInfo.InvariantCulture)這將失敗,因為文本不是
MM/dd格式。請注意,"M/d"可以從字元串中解析日期,"MM/dd"因為某些日期和月份將是 2 個字元(“10/20…”)。但反之則不然:“MM/dd”需要前導0. 指定正確的格式,你不會得到格式異常:actualDate = DateTime.ParseExact(xmlSource, "M/d/yyyy h:mm:ss tt", Globalization.CultureInfo.InvariantCulture)
ParseExact可能是這裡最好的方法,因為您似乎正在從其他地方導入數據。對於使用者輸入的簡單數據驗證,Parse或者TryParse通常就足夠了。這些將嘗試使用為目前文化定義的 任何格式模式來解析文本。有些文化有超過 100 種。這意味著使用者幾乎可以隨意輸入日期數據,並且您的程式碼仍然可以將其解析/轉換為
DateTime類型。有關詳細資訊,請參閱DateTime.ParseExact。