2016-12-07 15 views
0

私はStartDateとEndDateの2つの日付を持っています。そして、平日に、特定の日を検索したいと思います。月曜日、火曜日、土曜日の2つの日付の間。そして、2回目のループで特定の日を変更する方法。日付が2つの日付の間にある特定の日を見つける方法

私はどのように私は2つの日付の間のループを実行することができ、以下のコード

NSDictionary *dict = @{ 
        @"name": @"kiran", 
        @"startdate": @"25-11-16", 
        @"SUNDAY": @"none" 
        @"MONDAY": @"monday" 
        @"TUESDAY": @"tuesday" 
        @"WEDNESDAY": @"none" 
        @"THURSDAY": @"none" 
        @"FRIDAY": @"friday" 
        @"SATURDAY": @"none" 
        @"EndDate": @"7-12-2016" 
        }; 

NSDictionary *dict1 = @{ 
        @"name": @"Bala", 
        @"startdate": @"1-11-16", 
        @"SUNDAY": @"sunday" 
        @"MONDAY": @"none" 
        @"TUESDAY": @"tuesday" 
        @"WEDNESDAY": @"none" 
        @"THURSDAY": @"thursday" 
        @"FRIDAY": @"friday" 
        @"SATURDAY": @"none" 
        @"EndDate": @"7-12-2016" 
        }; 

NSDictionary *dict2 = @{ 
        @"name": @"Sri", 
        @"startdate": @"1-12-16", 
        @"SUNDAY": @"sunday" 
        @"MONDAY": @"monday" 
        @"TUESDAY": @"tuesday" 
        @"WEDNESDAY": @"wednesday" 
        @"THURSDAY": @"thursday" 
        @"FRIDAY": @"friday" 
        @"SATURDAY": @"saturday" 
        @"EndDate": @"7-12-2016" 
        }; 

NSMutableArray *listMutableArray =[[NSMutableArray alloc] initWithObjects:dict,dict1,dict2, nil]; 

を流しアレイ内の複数のオブジェクトを追加したいですか?

Iが出力されたい:最初のdict

25-11-2016、金曜日、

28-11-2016キラン、月曜日、

29-11-2016

キラン、火曜日、キラン

2016年2月12日、金曜日、キラン

2016年5月12日、月曜日、キラン

2016年6月12日、火曜日、第二及び第三のdictの出力と同じ

キラン。すべての平日は1つの配列に格納されます。

+0

開始日と日数のみを持つ日付が必要な場合は、実際にSwiftのDateにadditionalTimeInterval(timeInterval)メソッドを使用して、必要な日付を取得することができます。 –

+0

しかし、私はあなたが「2番目のループで特定の日を変更する方法」の意味を理解していないので、2番目のループのコードを投稿して、この問題にどのように近づいたかを理解してほしいかもしれません。 –

+0

@BenOngこれどうやってするの? –

答えて

-1

私は私が代わりにObjCの迅速を使用して私の答えを与えるつもりです迅速に、より慣れて、あなたが言うためにあなたが望む結果を得るためにあなたのコードを

をにObjCを使用する必要があれば、擬似コードとしてそれを読みますweekDaysToCountは一日を開始すると、あなたは、配列を調整する必要があるような状況ではない月曜日、であることを前提としていることをMutableArray

let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "dd-MM-yyyy" 

let dict = listMutableArray[0] as Dictionary 
let name = dict["name"] 
let startDate = dateFormatter.date(from: dict["startdate"]) 
let endDate = dateFormatter.date(from: dict["enddate"]) 

let totalDuration = endDate.timeIntervalSince(startDate) 
let totalDuration = totalDuration/86400 //to get days from seconds - 86400 = 60*60*24 

let weekDaysToCount:Array<Bool> = Array() 
if dict["MONDAY"] != "none" { 
    weekDaysToCount.append(true) 
} else { 
    weekDaysToCount.append(false) 
} 
... ... 
//Repeat for all days 

for i in 0..<Int(totalDuration) { 
    for validDay in weekDaysToCount { 
     startDate = startDate.addingTimeInterval(86400) //one day 
     if validDay { 
      print("\(startDate), \(name)") 
     } 
    } 
} 

ノートのちょうど最初の項目。

+0

そして、ロジックの助けが必要なら、あなたがすでに持っているものを表示する方が良いでしょう。このコードでは、実際の状況で起こる –

+0

遅く再生するために申し訳ありません、ObjCで変換してください。あなたのコードは使えず、私のObjCで賞賛しているからです。 –

+1

私にあなたのコードを入力させないでください。あなたはそのロジックを使ってコードを作成することができます。関数とパラメータの名前はほぼ同じで、ロジックが結果を得るために十分に役立つでしょう。 –

関連する問題