解析一个格式奇怪的日期时间。有人愿意来帮忙吗?

4
我正在尝试解析一个日期时间戳(从Twitter获取),但出现了错误。以下是日期时间戳:

Fri, 27 Aug 2010 22:00:07 +0000

以下是我的代码:

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

这是我的错误信息:

System.FormatException was unhandled Message=String was not recognized as a valid DateTime.

有人可以帮忙解决吗?为了方便起见,我提供了一个控制台应用程序的代码,以展示问题。
谢谢。 Jamie
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"));

    }
}

1
感谢所有发现这个问题的人,应该是yyyy而不是YYYY。现在感到有些尴尬...溜回安静的角落去了... :) - jamiet
6个回答

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是不正确的,因为它代表的是十万分之一秒而不是时区指示符,正确的时区指示符应该是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"));

请参阅 自定义日期和时间格式字符串

0

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

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

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

0

你的 YYYY 应该改成 yyyy 吗?

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


0
年份部分需要小写:ddd,dd MMM yyyy HH:mm:ss +ffff


-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"));

GMT偏移量取决于DLS。 - GuiSim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接