2011-09-09 12 views
0

次のパラメータを受け入れ、作業時間のリストを提供する、C#でメソッドを書くのを手伝ってくれますか?いくつかのパラメータに基づいてワークタイムスロットを取得するC#メソッド

1.String workStartingTime

2.String workStopTime

3.int iBreaktime

4.int iWorkInterval

私は動作しますが、それはあまりにも非保守性だいまいましいコードを書きました考案された。パラメーター下で実行するためのサンプル出力が提供される:

workStartTime = "9:00 AM"

workStopTime = "6:00 PM"

ibreakTime = 10

iWorkInterval = 60

出力:

12:30 PM - 01:30 PM

11:20 AM - 12:20 PM

10:10 AM - 11:10 AM

は、各間隔がギャップを残して、作業終了時刻までの事をまたがるためにあなたは、アイデアを得る願っています。

注方法ワークSTARTTIMEおよびENDTIMEにより

そう9:30 AM - 10:00 PM又は9:00 - 16:00すなわち、12または24時間形式のようなデータベースに格納されています。

答えて

2

あなたは自由Time Period Library for .NETCalendarPeriodCollectorを使用することができます。あなたは `9:30変換することができどのよう

// ---------------------------------------------------------------------- 
public void CalendarPeriodCollectorSample() 
{ 
    CalendarPeriodCollectorFilter filter = new CalendarPeriodCollectorFilter(); 
    filter.Months.Add(YearMonth.January); // only Januaries 
    filter.WeekDays.Add(DayOfWeek.Friday); // only Fridays 
    filter.CollectingHours.Add(new HourRange(8, 18)); // working hours 

    CalendarTimeRange testPeriod = 
    new CalendarTimeRange(new DateTime(2010, 1, 1), new DateTime(2011, 12, 31)); 
    Console.WriteLine("Calendar period collector of period: " + testPeriod); 
    // > Calendar period collector of period: 
    //   01.01.2010 00:00:00 - 30.12.2011 23:59:59 | 728.23:59 

    CalendarPeriodCollector collector = 
      new CalendarPeriodCollector(filter, testPeriod); 
    collector.CollectHours(); 
    foreach (ITimePeriod period in collector.Periods) 
    { 
    Console.WriteLine("Period: " + period); 
    } 
    // > Period: 01.01.2010; 08:00 - 17:59 | 0.09:59 
    // > Period: 08.01.2010; 08:00 - 17:59 | 0.09:59 
    // > Period: 15.01.2010; 08:00 - 17:59 | 0.09:59 
    // > Period: 22.01.2010; 08:00 - 17:59 | 0.09:59 
    // > Period: 29.01.2010; 08:00 - 17:59 | 0.09:59 
    // > Period: 07.01.2011; 08:00 - 17:59 | 0.09:59 
    // > Period: 14.01.2011; 08:00 - 17:59 | 0.09:59 
    // > Period: 21.01.2011; 08:00 - 17:59 | 0.09:59 
    // > Period: 28.01.2011; 08:00 - 17:59 | 0.09:59 
} // CalendarPeriodCollectorSample 
0
void CreateTimes(DateTime start, DateTime end, int interval, TimeSpan work) 
{ 
    DateTime currentStart = start; 
    while(currentStart < end && currentStart.Add(work)<end) 
    { 
     Console.WriteLine(String.Format("{0} - {1}", currentStart, currentStart.Add(work))); 
     currentStart.AddMinutes(interval); 
    } 
} 
+0

から6:

ツールは、労働時間などの各種フィルター、サポート別の日時インスタンスに00Pm'文字列をあなたもまた、そのコードを追加することができたTimeSpanは、あなた可能性パラメータがあなたのメソッドのパラメータにどのように変換されるか詳しく調べる – Deeptechtons

+1

DateTime.Parse mathodを使うことができます:http://msdn.microsoft.com/en-us/library/1k1skd40.aspx – PVitt

+0

私は 'DateTime.Parse("(9)午前0時〜午後6時 ")' exp'は無効な文字列を返す – Deeptechtons

関連する問題