如何在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.

来自原始问题:
我得到的xml响应日期格式字符串是“MM / dd / yyyy h:mm:ss a”

来自评论
xml返回日期格式为“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,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通常就足够了.这些将尝试使用为当前文化定义的任何格式模式来解析文本.

一些cultures have well over 100.这意味着用户几乎可以根据需要输入日期数据,您的代码仍然可以解析/转换为DateTime类型.

有关更多信息,请参见DateTime.ParseExact.

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...