好的,所以我正在尝试阅读Twitter提要XML的日期/时间,它目前采用以下格式:Fri May 03 15:22:09 +0000 2013但是我的C#并没有把它读作日期/时间类型。
这就是我得到的:
ArticleDate = DateTime.Parse(d.Element("created_at").Value)
created_at包含:Fri May 03 15:22:09 +0000 2013格式
答案 0 :(得分:6)
小心点。您获得的时间是UTC。您最终可能会无意中让当地时区影响结果。
例如,其他一个答案建议使用此代码:
DateTime dt = DateTime.ParseExact("Fri May 03 15:22:09 +0000 2013",
"ddd MMM dd HH:mm:ss zzz yyyy",
CultureInfo.InvariantCulture);
我在亚利桑那州(UTC-7)的计算机上的结果是:
5/3/2013 8:22:09 AM (dt.Kind == DateTimeKinds.Local)
虽然这是我当地时间的正确时刻,但这并不是给我的,除非密切注意.Kind
财产,否则它可能不是你所期望的。
您可以改为执行以下操作:
DateTime dt = DateTime.ParseExact("Fri May 03 15:22:09 +0000 2013",
"ddd MMM dd HH:mm:ss zzz yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.AdjustToUniversal);
返回:
5/3/2013 3:22:09 PM (dt.Kind == DateTimeKinds.Utc)
哪个更符合您的开始。
现在,假设从Twitter返回的值将始终为UTC。情况似乎是according to their FAQ。但有人可能会争辩说,既然我们得到了一个偏移量,那么使用所提供的偏移量可能更为正确。如果偏移量发生变化,我们不希望我们的代码中断。因此,使用DateTimeOffset
类更合适。
DateTimeOffset dto = DateTimeOffset.ParseExact("Fri May 03 15:22:09 +0000 2013",
"ddd MMM dd HH:mm:ss zzz yyyy",
CultureInfo.InvariantCulture);
结果是:
5/3/2013 3:22:09 PM +00:00
答案 1 :(得分:2)
您应该使用DateTime的ParseExact来获取您的值
DateTime.ParseExact("Fri May 03 15:22:09 +0000 2013","ddd MMM dd HH:mm:ss zzz yyyy", CultureInfo.InvariantCulture);
答案 2 :(得分:1)
使用DateTime.TryParseExact之类的:
if (DateTime.TryParseExact("Fri May 03 15:22:09 +0000 2013",
"ddd MMMM dd HH:mm:ss zzz yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out ArticleDate))
{
//date is fine
}
答案 3 :(得分:1)
Twitter APi XML中针对此特定日期格式的实际代码修复如下:
using System.Globalization;
CultureInfo enUS = new CultureInfo("en-US");
DateTime dateValueOut;
string userCreated = "Fri May 03 15:22:09 +0000 2013";
bool isDateFormatted = DateTime.TryParseExact(userCreated,"ddd MMM dd HH:mm:ss zzzz yyyy",enUS,DateTimeStyles.None, out dateValueOut);
if (isDateFormatted == true)
{
DateTime formattedDateTime = dateValueOut;
}
答案 4 :(得分:0)
您可以使用
var date = DateTime.TryParseExcact(d.Element("created_at").Value, new String[]{"pattern" });
http://msdn.microsoft.com/en-us/library/system.datetime.tryparseexact.aspx