Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.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解析iCalendar日期#_C#_.net_Icalendar - Fatal编程技术网

C# 使用c解析iCalendar日期#

C# 使用c解析iCalendar日期#,c#,.net,icalendar,C#,.net,Icalendar,有没有一种直接的方法可以使用c#将iCalendar日期解析到.net? iCalendar日期如下所示: 2009-08-11T10:00+05:0000 我需要解析它以友好的格式显示它。。。谢谢您可以使用DateTime.Parse()解析+之前的所有内容。我不知道iCalendar格式规范,但我假设+之后是添加到+之前日期的小时/分钟。因此,您可以使用AddHours()和AddMinutes()将所需位添加到DateTime.Parse()返回的DateTime中 这需要一点字符串解析

有没有一种直接的方法可以使用c#将iCalendar日期解析到.net? iCalendar日期如下所示:

2009-08-11T10:00+05:0000

我需要解析它以友好的格式显示它。。。谢谢

您可以使用
DateTime.Parse()
解析+之前的所有内容。我不知道iCalendar格式规范,但我假设+之后是添加到+之前日期的小时/分钟。因此,您可以使用
AddHours()
AddMinutes()
将所需位添加到
DateTime.Parse()返回的DateTime中


这需要一点字符串解析,但使用一点正则表达式应该可以……

您可以使用
DateTime.Parse()
解析+之前的所有内容。我不知道iCalendar格式规范,但我假设+之后是添加到+之前日期的小时/分钟。因此,您可以使用
AddHours()
AddMinutes()
将所需位添加到
DateTime.Parse()返回的DateTime中

string strDate = "2009-08-11T10:00+05:0000";
DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
dtfi.FullDateTimePattern = "yyyy-MM-ddTHH:mmzzz";

DateTime dt = DateTime.Parse(c.Substring(0, c.Length-2), dtfi);
这需要一点字符串解析,但有一点正则表达式,你应该很好

string strDate = "2009-08-11T10:00+05:0000";
DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
dtfi.FullDateTimePattern = "yyyy-MM-ddTHH:mmzzz";

DateTime dt = DateTime.Parse(c.Substring(0, c.Length-2), dtfi);
zzz表示时区,但仅当表示为:+xx:xx时才能识别。 我使用您的示例进行了测试,删除了最后2个0,然后使用自定义DateTimeFormatInfo进行解析

zzz表示时区,但仅当表示为:+xx:xx时才能识别。
我使用您的示例进行了测试,删除最后2个0,然后使用自定义DateTimeFormatInfo进行解析。由于这不是标准格式字符串,但您知道确切的格式,因此可以使用
DateTime.ParseExact
并指定,如下所示:

DateTime.ParseExact(d, "yyyy-MM-ddTHH:mmzzz00", CultureInfo.InvariantCulture);

“zzz”说明符表示与UTC的小时和分钟偏移量,两个结束零只是与您正在处理的格式相匹配的文字。

由于这不是标准格式字符串,但您知道确切的格式,您可以使用
DateTime.ParseExact
并指定,如下所示:

DateTime.ParseExact(d, "yyyy-MM-ddTHH:mmzzz00", CultureInfo.InvariantCulture);

“zzz”说明符表示与UTC的小时和分钟偏移量,两个结束零只是与您所处理的格式相匹配的文字。

找到了一个半答案:使用DateTime::。解析方法(String,IFormatProvider,DateTimeStyles),样式为None a,格式提供程序为culturecurrent,但我仍然有一个问题,上面的icalendar日期引发了一个异常,显然它不允许最后两个零!我不知道最后两个零代表什么,但有办法解决吗?请看我下面的答案,我假设日期代表10:00+5小时,即15:00(下午3:00)。找到了一个半答案:使用DateTime.:.Parse方法(String,IFormatProvider,DateTimeStyles),样式为None,格式提供程序为culturecurrent,但我仍然有一个问题,上面的icalendar日期引发了一个异常,显然它不允许最后两个零!我不知道最后两个零代表什么,但有没有办法解决这个问题?请看我下面的答案,我假设日期代表10:00+5小时,即15:00(下午3:00)。