我正在尝试解析一个日期戳(我从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"));
}
}
答案 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"));
答案 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"));