所以我在C#中使用基于日历的应用程序,我需要得到一周中某个事件要重复的日子(例如,每周一/周五)。
我将事件存储在XML中,定义如下:
<events>
<event startDate = "Insert Date Here" endDate = "Insert Date Here">Event Name</event>
</events>
如何在此XML文件中简单可靠地存储和检索一周中的特定日期?
如果有帮助,我会用CheckBoxList
指定一周的日期,我将循环检查,以及检查。
答案 0 :(得分:1)
您可以使用this XML library
中的以下内容XElement a = new XElement("root");
a.Set("day", DayOfWeek.Thursday, true); // true = set as attribute of 'a'
DayOfWeek day = a.Get("day", DayOfWeek.Friday); // DayOfWeek.Friday is default
Console.WriteLine(day);
输出:
Thursday
生成的XML:
<root day="Thursday" />
答案 1 :(得分:0)
最简单的方法是将值序列化为int,然后将它们与C#代码中的枚举一起使用(0 =星期日,1 =星期一,等等)。你也可以使用这些词。
然后您可以阅读它们并使用代码中的内置enum values as listed in the docs来保持可读性。顺便说一句,
如果转换为整数,则其值的范围为零(表示 DayOfWeek.Sunday)至6(表示DayOfWeek.Saturday)。
如果您提供有关如何将数据从xml读入C#应用程序的详细信息,我可以提供更多细节。
答案 2 :(得分:0)
这似乎是你在设计中注入了脆弱性。假设您的&lt; event&gt;的星期几(DoW)和日期不一致?你的应用程序做了什么?
我认为最好根据初始日期计算星期几:
var repeatingEvents = new List<DateTime>();
repeatingEvents.Add(new DateTime(2015, 4, 15));
for (var i = 1; i < 5; i++)
{
repeatingEvents.Add(repeatingEvents[0].AddDays(7*i));
}
这会在一周的同一天为您提供5个事件,而不必担心实际的DoW是什么。
如果你绝对坚持序列化DoW,请查看DateTime:它已经支持DayOfWeek函数,并且有一个DayOfWeek枚举供您使用。