Nar*_*lla 7 .net vb.net datetime
我得到的xml响应日期格式字符串是"MM/dd/yyyy h:mm:ss a"但我需要转换其他日期格式""dd MMM yy HH:mm"".
如何在vb.net中转换日期格式?请给我任何建议.
Ňɏs*_*arp 13
假设您要将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)
Run Code Online (Sandbox Code Playgroud)
一旦有了实际的日期变量,就可以以任何所需的格式显示它.这样做不会更改基础日期值,只是更改输出样式:
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"))
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
这将失败,因为文本不是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)
Run Code Online (Sandbox Code Playgroud)
ParseExact这可能是最好的方法,因为它似乎是从其他地方导入数据.对于用户输入的简单数据验证,Parse或者TryParse通常就足够了.这些将尝试使用为当前文化定义的任何格式模式来解析文本.
有些文化超过100种.这意味着用户几乎可以根据需要输入日期数据,您的代码仍然可以将其解析/转换为DateTime类型.
有关更多信息,请参阅DateTime.ParseExact.