1

我想做一个重复的事件,比如每周二和周四早上 8:30 发生的事情 因为它是重复的,我不希望涉及月、日和年的属性——只是小时和分钟。我应该仍然使用 DateTime,还是有其他方法可以最好地表示这些数据?

4

4 回答 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 回答