如何在vb.net中转换日期格式?

时间:2014-07-15 10:33:56

标签: .net vb.net datetime

我得到xml响应日期格式字符串是“MM / dd / yyyy h:mm:ss a”但我需要转换其他日期格式“”dd MMM yy HH:mm“”。
如何在vb.net中转换日期格式?请给我任何建议。

5 个答案:

答案 0 :(得分: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)

一旦你有了实际的日期变量,你就可以用任何所需的格式显示它。这样做不会更改基础日期值,只会更改输出样式:

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表示我们正在提供{{1>} 完全格式。当格式与实际字符串模式匹配时,它将失败:

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"模式解析字符串中的日期,因为某些日期和月份将为2个字符(“10/20 ...”)。但反之则不然:“MM / dd”将需要领先的"MM/dd"。指定正确的格式,您将不会得到格式异常:

0


actualDate = DateTime.ParseExact(xmlSource, "M/d/yyyy h:mm:ss tt", Globalization.CultureInfo.InvariantCulture) 可能是最好的方法,因为它似乎是从其他地方导入数据。对于用户输入的简单数据验证,ParseExactParse通常就足够了。这些将尝试使用为当前文化定义的任何格式模式来解析文本。

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

有关详细信息,请参阅DateTime.ParseExact

答案 1 :(得分:3)

Dim theirTime = "07/15/2014 1:43:38 PM"
Dim myFormat = "dd MMM yy HH:mm"

Dim myTime = Format(CDate(theirTime), myFormat)

答案 2 :(得分:1)

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 :(得分:0)

你可以这样做:

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

答案 4 :(得分:0)

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)