VB日期转换

时间:2008-11-06 18:32:23

标签: .net vb.net string .net-2.0 date

是否有一种简单的方法来转换包含此字符串的字符串:

Date: Wed, 5 Nov 2008 13:12:12 -0500 (EST)

到包含此字符串的字符串中:

20081105_131212

更新
我最终使用了date.tryparse,它类似于tryParseExact,除了你不必指定格式字符串。我确实必须消除()和EST以使其工作。日期字符串将始终为EST,因为日期字符串来自1个Web服务器。

原始字符串:

Date: Wed, 5 Nov 2008 13:12:12 -0500 (EST)

使用此代码:

buff1.Remove(0, 6).Replace("(", "").Replace(")", "").Replace("EST", "").Trim()

成为这个字符串:

Wed, 5 Nov 2008 13:12:12 -0500

然后我可以使用以下方式适当格式化以生成我的文件名日期:

 If Date.TryParse(buff1, dateValue) Then
   MsgBox(Format(dateValue, "yyyyMMdd_HHmmss"))
 Else
   MsgBox("nope")
 End If

6 个答案:

答案 0 :(得分:6)

在这种情况下,Date.Parse甚至优于Date.TryParseExact().ToString("yyyyMMdd_HHmmss")。这会让你告诉框架你期望什么格式并返回一个布尔值,而不是在解析失败时抛出异常。

然后使用{{1}}获取所需的新字符串格式。

以下是格式字符串引用,以备不时之需:
http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

最后,我注意到你忽略了-500时区偏移量。你确定你的所有字符串都来自同一时区吗?

答案 1 :(得分:1)

如果用VB表示VB.NET,你可以使用Date.Parse后跟ToString()格式字符串:

Date.Parse(YourDateString).ToString("yyyyMMdd_HHmmss")

注意:在解析字符串之前删除初始的“Date:”。

答案 2 :(得分:1)

对于纯VB解决方案,我会去

Function ConvertDateString(ByVal Original As String) As String
    Dim Elements As String() = Split(Original, " ")
    Dim DateString As String = Elements(3) & " " & Elements(2) & " " & Elements(4) & " " & Elements(5)
    Return Date.Parse(DateString).ToString("yyyyMMdd_HHmmsss")
End Function

您可以通过使用Parase中的连接字符串来消除DateString。如果分辨率为1024 x 768或更大,它将适合一行。

答案 3 :(得分:0)

Format(date, "yyyyMMdd_HHmmss")

有关format功能的更多帮助。

答案 4 :(得分:0)

就像@splattne在VB.NET中的解决方案一样,但也需要进行清理......

Dim strDateVal As String = "Date: Wed, 5 Nov 2008 13:12:12 -0500 (EST)"
strDateVal = strDateVal.Substring(strDateVal.IndexOf(", ") + 2, strDateVal.Length - strDateVal.IndexOf(", ") - 2)
strDateVal = strDateVal.Substring(0, strDateVal.LastIndexOf(" ")).TrimEnd
Dim DateVal As Date = Date.Parse(strDateVal)
Dim NewStringVal As String = Format(DateVal, "yyyyMMdd_HHmmss")

注意:这会忽略时区以匹配您的预期结果(根据问题中的示例数据)

答案 5 :(得分:0)

Dim strDateVal As String = "Date: Wed, 5 Nov 2008 13:12:12 -0500 (EST)"

strDateVal = strDateVal.Substring(strDateVal.IndexOf(", ") + 2, 
strDateVal.Length - strDateVal.IndexOf(", ") - 2)

strDateVal = strDateVal.Substring(0, strDateVal.LastIndexOf(" ")).TrimEnd

Dim DateVal As Date = Date.Parse(strDateVal)
Dim NewStringVal As String = Format(DateVal, "ddMMyyyy_HHmmss")