解析格式奇怪的DateTime。有人喜欢加紧吗?

时间:2010-08-30 15:06:03

标签: c# .net parsing datetime

我正在尝试解析一个日期戳(我从Twitter获得)但收到错误。这是日期戳:

  

2010年8月27日星期五22:00:07 +0000

这是我的代码:

  

DateTime.ParseExact(MyDateValue,“ddd,dd MMM YYYY HH:mm:ss + ffff”,new CultureInfo(“en-US”))

这是我的错误:

  

System.FormatException未处理     Message = String未被识别为有效的DateTime。

有人喜欢这样吗?为了方便起见,我已经为显示问题的控制台应用程序提供了以下代码。

由于 杰米

using System;
using System.Globalization;

class Program
{
    static void Main(string[] args)
    {
        string MyDateValue = "Fri, 27 Aug 2010 22:00:07 +0000";
        var dt = DateTime.ParseExact(MyDateValue, "ddd, dd MMM YYYY HH:mm:ss +ffff", new CultureInfo("en-US"));

    }
}

6 个答案:

答案 0 :(得分:9)

年份说明符为yyyy,而不是YYYY

string MyDateValue = "Fri, 27 Aug 2010 22:00:07 +0000";
var dt = DateTime.ParseExact(MyDateValue, "ddd, dd MMM yyyy HH:mm:ss +ffff", new CultureInfo("en-US"));

上述工作正常,只要它不会抛出异常。

我假设字符串末尾的+0000应该是时区说明符。如果是,则ffff不正确,因为它代表The hundred thousandths of a second,而不是时区说明符,即K。如果它确实应该是时区说明符,那么这将是正确的代码:

string MyDateValue = "Fri, 27 Aug 2010 22:00:07 +0000";
var dt = DateTime.ParseExact(MyDateValue, "ddd, dd MMM yyyy HH:mm:ss K", new CultureInfo("en-US"));

请参阅Custom Date and Time Format Strings

答案 1 :(得分:0)

您的YYYY应该yyyy吗?

我对DateTime的自定义格式信息的帮助文件只有小写y,没有大写。

答案 2 :(得分:0)

注意年份的变化:YYYY-> yyyy

DateTime.ParseExact(MyDateValue, "ddd, dd MMM yyyy HH:mm:ss +ffff", new CultureInfo("en-US"))

答案 3 :(得分:0)

System.DateTime.ParseExact(MyDateValue, "ddd, dd MMM yyyy HH:mm:ss zzz", new System.Globalization.CultureInfo("en-US"));

答案 4 :(得分:0)

年份部分必须是小写的:ddd, dd MMM yyyy HH:mm:ss +ffff

答案 5 :(得分:-1)

我删除了“+0000”并使用了DateTime.Parse()

要达到我的实际时区(因为+0000可能是GMT的偏移)我也设置了它。

string myDateValue = "Fri, 27 Aug 2010 22:00:07"; //get this using substring
int gmtOffset = -6; //I'm in the Central TimeZone
DateTime dt = DateTime.Parse(myDateValue);
dt.AddHours(gmtOffset);

Console.WriteLine(dt.ToString("ddd, dd MMM yyyy hh:mm:ss"));