将其转换为日期时间格式C#
好的,我正在尝试读取Twitter提要XML的日期/时间,它当前的格式是:Fri May 03 15:22:09+0000 2013,但是我的C#没有将其作为日期/时间类型读取 这就是我得到的:将其转换为日期时间格式C#,c#,xml,datetime,twitter,C#,Xml,Datetime,Twitter,好的,我正在尝试读取Twitter提要XML的日期/时间,它当前的格式是:Fri May 03 15:22:09+0000 2013,但是我的C#没有将其作为日期/时间类型读取 这就是我得到的: ArticleDate = DateTime.Parse(d.Element("created_at").Value) 创建时包含:Fri May 03 15:22:09+0000 2013格式 您应该使用DateTime的ParseExact来获取您的值 DateTime.ParseExact(
ArticleDate = DateTime.Parse(d.Element("created_at").Value)
创建时包含:Fri May 03 15:22:09+0000 2013格式
您应该使用DateTime的ParseExact来获取您的值
DateTime.ParseExact("Fri May 03 15:22:09 +0000 2013","ddd MMM dd HH:mm:ss zzz yyyy", CultureInfo.InvariantCulture);
你可以用
var date=DateTime.tryparseexact(d.Element(“created_at”).Value,新字符串[]{“pattern”});
小心点。返回的时间以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)的计算机上执行此操作的结果是:
虽然这是我当地时间的正确时刻,但这不是给我的,也可能不是你期望的,除非密切注意.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。似乎是这样。但有人可能会说,既然我们得到了一个补偿,那么按照规定使用该补偿可能更为正确。如果偏移量发生变化,我们不希望代码中断。因此,使用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
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;
}
你在S.O对同一主题的搜索结果是什么?试试看。
+0000
部分可以用作时区的zzz
offset@V4Vendetta,这很完美,但这使我的答案重复,所以+1,对你来说很接近,但你强加了计算机的本地时区。有关详细信息,请参阅我的答案。
5/3/2013 3:22:09 PM +00:00
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;
}