2012-04-18 98 views
3

我解析了一个字符串格式的日期,并希望将其转换为日期时间格式,但无法弄清楚如何执行此操作。 日期显示为:解析日期格式难以转换

Wed April 18 08:00:04 +08:00 2012 

,并希望它在

2012-04-18 08:00:00 

代码的简单形式:

Dim postDate As DateTime 
Dim provider As CultureInfo = CultureInfo.InvariantCulture 

contentDate = Regex.Replace(contentDate, "\+", "") 
Dim format As String = "ddd MMMM dd HH:mm:ss zzz yyyy" 
postDate = DateTime.ParseExact(contentDate, format, provider) 
contentDate = postDate.ToString("yyyy-MM-dd hh:mm:ss tt") 

任何想法表示赞赏

+0

你可以展示你所尝试过的东西,并描述你所尝试的东西如何不起作用? – overslacked 2012-04-18 18:57:47

回答

6
var format = "ddd MMMM dd H:mm:ss zzz yyyy"; 
var culture = System.Globalization.CultureInfo.InvariantCulture; 
DateTime date = DateTime.ParseExact(dateString.Trim(), format, culture); 

将解析您提供的日期格式。请注意,上述格式字符串假定您正在解析的日期格式对于小于10的日期使用两位数字,即。 April 01

date.ToString("yyyy-MM-dd hh:mm:ss tt"); 

将产生所需的输出日期格式。

仅供参考,您应该查看DateTime.ParseExact()Custom Date and Time Format Strings的MSDN文档。

+0

谢谢;我之前尝试过,然后完全使用您的代码,仍然得到错误:字符串未被识别为有效的日期时间 – vbNewbie 2012-04-18 19:54:17

+0

我认为你可能有你的字符串中的前导或尾随空白。尝试将'dateString.Trim()'传入代码并查看它是否有效。我更新了我的答案以表明这一点。 – 2012-04-18 20:03:30

+0

从来没有想过它谢谢,格式是错误的ddd MMM dd hh:mm:ss zzz yyyy,我首先删除了+。感谢您的帮助 – vbNewbie 2012-04-18 20:10:52

3
string dateString, format; 
    DateTime result; 
    CultureInfo provider = CultureInfo.InvariantCulture; 

    dateString = "Wed April 18 08:00:04 +08:00 2012"; 
    format = "ddd MMMM dd HH:mm:ss zzz yyyy"; 
    try { 
    result = DateTime.ParseExact(dateString, format, provider); 
    Console.WriteLine("{0} converts to your format {1}.", dateString, 
     result.ToString("yyyy-MM-dd HH:mm:ss")); 
    } 
    catch (FormatException) { 
    Console.WriteLine("{0} is not in the correct format.", dateString); 
    } 
+0

谢谢;我之前尝试过,然后准确地使用你的代码,仍然得到错误:字符串不被认为是一个有效的日期时间 – vbNewbie 2012-04-18 19:52:38

+0

不知道弄明白了谢谢,格式错了ddd MMM dd hh:mm:ss zzz yyyy,我正在删除+首先。感谢您的帮助 – vbNewbie 2012-04-18 20:10:34