我想做一个经常性的事件,比如每周二和周四早上8:30发生的事情。因为它经常发生,我不希望有月,日和年属性 - 只是小时和分钟。我还应该使用DateTime,还是有其他方法可以最好地表示这些数据?
答案 0 :(得分:3)
查看ICal on Wikipedia和相应的RFC 5545,了解为重复活动创建良好数据结构所需的信息。
每日直到1997年12月24日:
DTSTART;TZID=America/New_York:19970902T090000 RRULE:FREQ=DAILY;UNTIL=19971224T000000Z
DateTime
或TimeSpan
适用于“时间”部分。尝试首先编写使用您的数据结构的代码,并查看哪些方法最佳,因为DataTime
和TimeSpan
的API略有不同。
答案 1 :(得分:2)
DateTime没有多大意义。我只需要一个具有您所需字段的类:
public class DayAndTime {
public DayOfWeek Day { get; set; }
public int Hour { get; set; }
public int Minute { get; set; }
public int Second { get; set; }
}
接受回答后编辑,因为我认为这很有趣:
您还可以向该类添加一个方法,以便下次需要运行时:
public DateTime NextDate {
get {
DateTime today = DateTime.Today;
DateTime now = DateTime.Now;
int daysUntilWeekday = ((int)Day - (int)today.DayOfWeek + 7) % 7;
DateTime nextWeekDay = today.AddDays(daysUntilWeekday);
var nextTime = nextWeekDay.AddSeconds(Second).AddMinutes(Minute).AddHours(Hour);
if (nextTime < DateTime.Now) {
return nextTime.AddDays(7);
}
else {
return nextTime;
}
}
}
答案 2 :(得分:1)
我使用TimeStamp
并将其从第0天的午夜(即星期日)偏移。
答案 3 :(得分:0)
我还应该使用DateTime,还是有其他方法可以最好地表示这些数据?
在处理DateTime格式时,最好使用DateTime。当您想要进行一些重复活动时,它将提供有关星期几的信息。
你可以使用Timer来检查它是星期二还是星期四8:30 A.M或不。