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