重复发生的事件 - 使用DateTime?

时间:2012-08-20 16:10:11

标签: c# .net

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

4 个答案:

答案 0 :(得分:3)

查看ICal on Wikipedia和相应的RFC 5545,了解为重复活动创建良好数据结构所需的信息。

  

每日直到1997年12月24日:

  DTSTART;TZID=America/New_York:19970902T090000
  RRULE:FREQ=DAILY;UNTIL=19971224T000000Z

DateTimeTimeSpan适用于“时间”部分。尝试首先编写使用您的数据结构的代码,并查看哪些方法最佳,因为DataTimeTimeSpan的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或不。

相关问题