Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将其转换为日期时间格式C#_C#_Xml_Datetime_Twitter - Fatal编程技术网

将其转换为日期时间格式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(

好的,我正在尝试读取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("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;                    
}