微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐