How to convert date format in vb.net?

匿名 (未验证) 提交于 2019-12-03 02:49:01

问题:

I am getting xml response date format string is "MM/dd/yyyy h:mm:ss a" but I need convert other date format ""dd MMM yy HH:mm"".

How to convert date format in vb.net? Please give me any suggestion.

回答1:

Assuming you want to convert the xml string value to a proper DateTime variable, Net has many methods for this:

' 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) 

Once you have am actual date variable, you can display it in any format required. Doing so does not change the underlying date value, it just changes the output style:

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 types are a value; they do not have a format. Formats are for how we display data to humans (as with .ToString() above) and how we tell DataTime the pattern to expect when parsing text data from humans into a DateTime variable.

You must be careful when using many of the VB functions. Some do not create date types at all, just new string variables. CDate can be especially problematic when using date strings from other cultures . It assumes the string is in the current culture format, which may not be the case. This can lead to 08/07/yyyy converting to 07/08/yyyy.


From original question:
I am getting xml response date format string is "MM/dd/yyyy h:mm:ss a"

From comment:
xml returning date format is "7/8/2014 12:00:00 PM"

The format specified in the question does not match the example posted in the comment. The xmlDate text is in fact in M/d/yyyy format, not MM/dd/yyyy! Using ParseExact means we are giving DateTime the exact format to expect. When the format does not match the actual string pattern, it will fail:

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) 

This will fail because the text is not in MM/dd format. Note that "M/d" can parse dates from strings in the pattern of "MM/dd" because some days and months will be 2 characters ("10/20..."). But the reverse is not true: "MM/dd" will require the leading 0. Specify the correct format and you wont get a format exception:

 actualDate = DateTime.ParseExact(xmlSource, "M/d/yyyy h:mm:ss tt",                                  Globalization.CultureInfo.InvariantCulture) 


ParseExact is probably the best approach here, because it appears you are importing data from elsewhere. For simple data validation of user input, Parse or TryParse are usually enough. These will try to parse the text using any of the format patterns defined for the current culture.

Some cultures have well over 100. This means the user can input date data almost anyway they want and your code can still parse/convert it to a DateTime type.

See DateTime.ParseExact for more information.



回答2:

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 


回答3:

You can do it like this:

Dim time As DateTime = DateTime.Now  'Your date Dim format As String = "dd MMM yy HH:mm" Dim newdate = time.ToString(format) 


回答4:

Dim theirTime = "07/15/2014 1:43:38 PM" Dim myFormat = "dd MMM yy HH:mm"  Dim myTime = Format(CDate(theirTime), myFormat) 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!