2011-11-08 64 views
0

我正在制作一个页面让讲座创建咨询槽,我制作的方式是将按钮控件循环5次(5个工作日)。我需要在时间表中禁用获得课程的按钮,并确定带有按钮内容的按钮,然后将其存储到数据库中。当讲师点击按钮时,弹出列(日期)+时间段的日期。获取当周的预约日期

Data for verify and disable button from table of timetable 
    start_time -> 2011-11-08 08:00:00 
    end_time -> 2011-11-08 10:00:00 

然后,我打算使用END_TIME - START_TIME = 2小时后,在2个小时,然后08:00,08:30,从09:00 START_TIME,09:30 4按钮将禁用。我创建

 string[] timeslot = {"08:00 AM", "08:30 AM", "09:00 AM", "09:30 AM", "10:00 AM", "10:30 AM", "11:00 AM", "11:30 AM", "12:00 PM", "12:30 PM", "01:00 PM", "01:30 PM", "02:00 PM", "02:30 PM", "03:00 PM", "03:30 PM", "04:00 PM", "04:30 PM", "05:00 PM", "05:30 PM"}; 
     for (int i = 0; i < 20; i++) 
     { 
      Button btnMonday = new Button 
            { 
             Height = 38, 
             Width = 256, 
             Content = timeslot[i], 
             Background = new SolidColorBrush(Color.FromArgb(0xFF, 0xB1, 0xB1, 0xB1)) 
            }; 
      // Sets dependency properties 
      btnMonday.SetValue(Grid.ColumnProperty, 0); 
      btnMonday.SetValue(Grid.RowProperty, i); 
      // Adds the dynamically created control to the canvas 
      LayoutRoot.Children.Add(btnMonday); 
     } 

我创建了周一栏按钮的按钮,但我不能假设星期一是gettime.now(),我可以知道我怎么能得到当前一周的一天的日期?

+0

你要求'DayOfWeek'枚举吗?我有点困惑你的问题。 – Marc

+0

我知道按钮是为星期一,星期二,星期三,星期四和星期五设计的。但它是自定义按钮,所以按钮需要知道本周的星期一的日期,本周的星期二... – 1myb

回答

2

由于DayOfWeek是一个枚举,它可以被铸造为一个int。

public enum DayOfWeek 
{ 
    Sunday = 0, 
    Monday = 1, 
    Tuesday = 2, 
    Wednesday = 3, 
    Thursday = 4, 
    Friday = 5, 
    Saturday = 6, 
} 

然后你可以从DateTime.Today

public static DateTime GetLastSunday() 
{ 
    DateTime today = DateTime.Today; 
    return today.AddDays(-((int)today.DayOfWeek)); 
} 

该天数,那么你可以添加星期回来要

public static DateTime GetDayOfThisWeek(DayOfWeek dayOfWeek) 
{ 
    DateTime today = DateTime.Today; 
    DateTime lastSunday = today.AddDays(-((int)today.DayOfWeek)); 
    return lastSunday.AddDays((int)dayOfWeek); 
} 

更新:

至于30分钟nks:

public IEnumerable<DateTime> GetHalfAnHourChunks(DateTime startFrom, DateTime until) 
{ 
    while(startFrom < until) 
    { 
     yield return startFrom; 
     startFrom = startFrom.AddMinutes(30); 
    } 
} 
+0

我仍然在测试这个,并且稍后让我们知道结果= D我相信每件事都应该像魅力。但是,我可否知道你是否有任何建议,以决定在每隔30分钟的部分之间分配多少小时? – 1myb

+1

'DateTime.Now - startOfWeekDateTime'将会为您提供time和now之间的时间作为'TimeSpan'。至于分裂成30分钟的块,我会在答案(Y) – Connell

+0

Thx伙计中插入一些东西...我的弱点是做这样的算法@。@你的答案帮助了很多= D – 1myb