use*_*174 2 c# xml twitter datetime
好的,所以我正在尝试阅读Twitter提要XML的日期/时间,它目前采用以下格式:Fri May 03 15:22:09 +0000 2013但是我的C#并没有将其作为日期/时间类型读取.
这就是我得到的:
ArticleDate = DateTime.Parse(d.Element("created_at").Value)
Run Code Online (Sandbox Code Playgroud)
created_at包含:Fri May 03 15:22:09 +0000 2013格式
小心.您获得的时间是UTC.您最终可能会无意中让您的本地时区影响结果.
例如,其他一个答案建议使用此代码:
DateTime dt = DateTime.ParseExact("Fri May 03 15:22:09 +0000 2013",
"ddd MMM dd HH:mm:ss zzz yyyy",
CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
我在亚利桑那州(UTC-7)的计算机上的结果是:
5/3/2013 8:22:09 AM (dt.Kind == DateTimeKinds.Local)
Run Code Online (Sandbox Code Playgroud)
虽然这是我当地时间的正确时刻,但这并不是给我的,除非密切关注该.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);
Run Code Online (Sandbox Code Playgroud)
返回:
5/3/2013 3:22:09 PM (dt.Kind == DateTimeKinds.Utc)
Run Code Online (Sandbox Code Playgroud)
哪个更符合你的开始.
现在,这假设从Twitter返回的值将始终为UTC.根据他们的FAQ,情况似乎就是这样.但有人可能会争辩说,既然我们得到了一个偏移量,那么使用所提供的偏移量可能更为正确.如果偏移量发生变化,我们不希望我们的代码中断.因此,使用DateTimeOffset该类更合适.
DateTimeOffset dto = DateTimeOffset.ParseExact("Fri May 03 15:22:09 +0000 2013",
"ddd MMM dd HH:mm:ss zzz yyyy",
CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
结果是:
5/3/2013 3:22:09 PM +00:00
Run Code Online (Sandbox Code Playgroud)