2016-06-30 18 views
2

Ich zeige sieben Tage des Monats in datepickerview.Wie man 7 Tage vom aktuellen Datum in IOS zeigt, wenn heute der letzte Tag des Monats ist

Aber mein Problem ist, wie man sieben Tage vom aktuellen Datum zeigt, wenn das heutige aktuelle Datum der letzte Tag des Monats ist.

Beispiel: Nehmen wir an, der heutige Monat ist Juni, der Juni hat 30 Tage und das heutige Datum ist 30. Mein Problem ist, wie die nächsten 6 Tage ab dem aktuellen Datum angezeigt werden, bedeutet in datepicker 30. Juni, 1. Juli, 2. Juli, 3. Juli , 4. Juli, 5. Juli, 6. Juli.

Bitte schlagen Sie mir vor, wie Sie dieses Problem lösen können. Ich habe auch den Code zur Verfügung gestellt, bitte sende mir, wo ich mit meinem Code falsch mache.

NSCalendar *calendar = [NSCalendar currentCalendar]; 
    NSDateComponents *comps = [NSDateComponents new]; 
    comps.day = 7; 

    NSDate *sevenDays = [calendar dateByAddingComponents:comps toDate:[NSDate date] options:0]; 
    ActionSheetDatePicker *datePicker = [[ActionSheetDatePicker alloc] initWithTitle:@"Select Date" datePickerMode:UIDatePickerModeDate selectedDate:[NSDate date] minimumDate:[NSDate date] maximumDate:sevenDays target:self action:@selector(timeWasSelected:element:) origin:sender]; 
+0

können Sie meine tick Antwort upvote. Es wird anderen SO-Benutzern hilfreich sein, ähnliche Probleme zu suchen und zu lösen. –

Antwort

2

NSDate *sevenDays = [[NSDate date] dateByAddingTimeInterval:60*60*24*7]; 

Dann können Sie in Datepicker als Ihrer unten-Code verwenden: Sie können durch folgende Codezeile nächsten sieben Tage berechnen.

ActionSheetDatePicker *datePicker = [[ActionSheetDatePicker alloc] 
    initWithTitle:@"Select Date" datePickerMode:UIDatePickerModeDate 
    selectedDate:[NSDate date] minimumDate:[NSDate date] 
    maximumDate:sevenDays target:self 
    action:@selector(timeWasSelected:element:) origin:sender]; 

Hoffnung Das wird Ihnen helfen.

Bitte Kommentar hinzufügen, wenn Sie Fragen dazu haben.

Glückliche Kodierung !!!

+0

Verwenden Sie niemals 86400 für Kalenderberechnungen. Wenn sich die Sommerzeit während des Intervalls ändert, kann dies zu unerwartetem Verhalten führen. – vadian

+0

@vadian ja Es ist richtig .. Vielen Dank für den Vorschlag.Ich denke, er will nur zeigen Datum in Picker also lieber als Schleife verwenden Sie einfach 86400. Frager, bitte beachten Sie Sommerzeit, wenn Sie an anderen Orten verwenden. –

+0

@Sandeep Bitte als Antwort machen, wenn es Ihnen hilft. –

0
NSDateComponents *dayComponent = [[NSDateComponents alloc] init]; 
dayComponent.day = 1; 

NSCalendar *theCalendar = [NSCalendar currentCalendar]; 
NSDate *nextDate = [theCalendar dateByAddingComponents:dayComponent toDate:[NSDate date] options:0]; 

NSLog(@"nextDate: %@ ...", nextDate); 

Daraus können Sie meine nächsten Tag berechnen, wenn heute 30 dann am nächsten Tag ist 1, so können Sie für Schleife verwenden und es sieben Mal laufen, als Sie die nächsten sieben Tage erhalten

0

Dies erstellt ein Array nextSevenDays enthält die nächsten 7 Tage einschließlich heute.

NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDate *startDate = [calendar startOfDayForDate:[NSDate date]]; 
NSMutableArray<NSDate*> * nextSevenDays = [[NSMutableArray alloc] init]; 
for (NSInteger i = 0; i < 7; i++) { 
    [nextSevenDays addObject:[calendar dateByAddingUnit:NSCalendarUnitDay value: i toDate: startDate options: NSCalendarMatchNextTime]]; 
} 
NSLog(@"%@", nextSevenDays); 

Um das Datum 7 Tagen ab jetzt

NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDate *startDate = [calendar startOfDayForDate:[NSDate date]]; 
NSDate *sevenDaysFromNow = [calendar dateByAddingUnit:NSCalendarUnitDay value: 7 toDate: startDate options: NSCalendarMatchNextTime]; 
NSLog(@"%@", sevenDaysFromNow); 
1

-Code verwenden, zu erhalten scheint korrekt zu sein, vielleicht ist Problem mit Picker Dritte Sie verwenden? Versuchen Sie Code mit UIDatePicker und sehen, ob Sie Ergebnisse, die Sie suchen, wenn dies der Fall bedeutet es ActionSheetDatePicker einige Probleme hat ....

NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDateComponents *comps = [NSDateComponents new]; 
comps.day = 7; 

NSDate *sevenDays = [calendar dateByAddingComponents:comps toDate: [NSDate date] options:0]; 

Im Folgenden Code mit UIDatePicker wie folgt aussieht ... ._datePicker ist IBOutlet UIDatePicker

NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDateComponents *comps = [NSDateComponents new]; 
comps.day = 7; 

NSDate *sevenDays = [calendar dateByAddingComponents:comps toDate:[NSDate date] options:0]; 
[_datePicker setMinimumDate:[NSDate date]]; 
[_datePicker setMaximumDate:sevenDays]; 

In UIDatePicker mit obigen Code, wenn Benutzer einen Bildlauf zur vorherigen Picker Datum wird automatisch auf den heutigen Tag legt, und gleich für 7. Juli, wenn der Benutzer blättern bis 10. Picker wird automatisch bis zum 7. Juli setzt current date...

+0

Danke! Es funktioniert. – Raja

1
for (int i = 0; i < 7; i ++) 
{ 
    NSCalendar *calendar = [NSCalendar currentCalendar]; 
    NSDateComponents *comps = [NSDateComponents new]; 
    comps.day =i; 
    NSDate *sevenDays = [calendar dateByAddingComponents:comps toDate:objDate.date options:0]; 
    [dateFormatter setDateFormat:@"dd/MM/yy"]; 

    NSString *str = [dateFormatter stringFromDate:sevenDays]; 
    NSLog(@"str : %@",str); 
} 

Hoffnung dieser Code wird Ihnen helfen ist :)