簡體   English   中英

如何在vb.net中轉換日期格式?

[英]How to convert date format in 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可能是這里最好的方法,因為它似乎是從其他地方導入數據。 對於用戶輸入的簡單數據驗證, ParseTryParse通常就足夠了。 這些將嘗試使用為當前文化定義的任何格式模式來解析文本。

有些文化超過100種 這意味着用戶幾乎可以根據需要輸入日期數據,您的代碼仍然可以解析/轉換為DateTime類型。

有關更多信息,請參閱DateTime.ParseExact

Dim theirTime = "07/15/2014 1:43:38 PM"
Dim myFormat = "dd MMM yy HH:mm"

Dim myTime = Format(CDate(theirTime), myFormat)
Dim dat As Date
Dim dd, mm, yyyy As String

DateTimePicker1.Value = DateTimePicker1.Value.AddDays(1)

If Len(DateTimePicker1.Value.Day) = 2 Then
    dd = DateTimePicker1.Value.Day
Else
    dd = "0" & DateTimePicker1.Value.Day
End If

If Len(DateTimePicker1.Value.Month) = 2 Then
    mm = DateTimePicker1.Value.Month
Else
    mm = "0" & DateTimePicker1.Value.Month
End If

yyyy = DateTimePicker1.Value.Year

dat = dd & "/" & mm & "/" & yyyy

你可以這樣做:

Dim time As DateTime = DateTime.Now  'Your date
Dim format As String = "dd MMM yy HH:mm"
Dim newdate = time.ToString(format)
Dim CommenceDateFormat As Date = 
    Date.ParseExact(CommenceDate, "dd/MM/yyyy", System.Globalization.DateTimeFormatInfo.InvariantInfo) 'converts date to a format understood for comparisons
Dim EndDateFormat As Date = 
    Date.ParseExact(EndDate, "dd/MM/yyyy", System.Globalization.DateTimeFormatInfo.InvariantInfo)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM