我想做一个重复的事件,比如每周二和周四早上 8:30 发生的事情 因为它是重复的,我不希望涉及月、日和年的属性——只是小时和分钟。我应该仍然使用 DateTime,还是有其他方法可以最好地表示这些数据?
问问题
1084 次
4 回答
3
查看Wikipedia 上的 ICal和相应的RFC 5545,以获取有关为经常性事件创建良好数据结构所需的信息的灵感。
每天到 1997 年 12 月 24 日:
DTSTART;TZID=America/New_York:19970902T090000 RRULE:FREQ=DAILY;UNTIL=19971224T000000Z
DateTime
或者TimeSpan
对于“时间”部分可以正常工作。尝试首先编写使用您的数据结构的代码,并查看哪些方法集最适合并DataTime
具有TimeSpan
稍微不同的 API。
于 2012-08-20T16:18:40.440 回答
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;
}
}
}
于 2012-08-20T16:18:07.683 回答
1
我会使用 aTimeStamp
并将其从第 0 天的午夜(即星期日)偏移。
于 2012-08-20T16:12:04.763 回答
0
我应该仍然使用 DateTime,还是有其他方法可以最好地表示这些数据?
是的,当您处理 DateTime 格式时,DateTime 是最好的。当您想要执行某些重复事件时,它将包含有关星期几的信息。
您可以使用计时器来检查它的星期二或星期四上午 8:30 是否。
于 2012-08-20T16:12:19.873 回答