2011-08-26 54 views
0

使用日期和时间选取器进行比较我使用下面的代码从提取器获取时间和日期,并在控制台中显示当前日期和时间。比较从选取器中选择的日期和时间以及当前的日期和时间

- (void)eventForDatePicker:(id)sender { 



    UIDatePicker *datePicker = (UIDatePicker *)sender; 

    NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    df.dateStyle = NSDateFormatterMediumStyle; 
    [df setDateFormat:@"yyyy-MM-dd HH:mm"]; 
    // [df setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
// [df setDateFormat:@"dd hh-mm-ss"]; 

    // message = [[NSString alloc] initWithFormat:@"%@", df]; 

    message = [NSString stringWithFormat:@"%@", 
          [df stringFromDate:datePicker.date]]; 
    NSLog(@"%@sssssssssssssssssfff",message); 



    NSUserDefaults *prefs4 = [NSUserDefaults standardUserDefaults]; 
    [prefs4 setObject:message forKey:@"name"]; 
    [prefs4 synchronize]; 




-(void)switchChanged:(id)sender { 

NSUserDefaults *prefs5 = [NSUserDefaults standardUserDefaults]; 
     NSString *mess = [prefs5 stringForKey:@"name"]; 



     [datearray addObject:mess]; 



     NSLog(@"is isssssss%@",datearray); 


     NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults]; 

     [currentDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:datearray] forKey:@"datesaving"]; 
     [currentDefaults synchronize]; 



}  

    //Now in anotherview , retrieving the contents in date array and by calling a function a text is displaying. 
    NSDate* date = [NSDate date]; 

    //Create the dateformatter object 

    NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease]; 

    //Set the required date format 

    [formatter setDateFormat:@"yyyy-MM-dd HH:mm"]; 

    //Get the string date 

    str = [formatter stringFromDate:date]; 

    //Display on the console 

    NSLog(@"fdf %@",str); 




    NSUserDefaults *currentDefaults2 = [NSUserDefaults standardUserDefaults]; 
    NSData *dataRepresentingSavedArray = [currentDefaults2 objectForKey:@"datesaving"]; 
    NSMutableArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray]; 

    if(oldSavedArray!=nil){ 
    datess = [[NSMutableArray alloc] initWithArray:oldSavedArray]; 


    } 





     NSLog(@"%doooooooooooooooo",[datess count]); 

     NSLog(@"%@llllllllllll111111111111",datess); 





-(void)check1 
{ 
     //NSLog(@"%@llllllllllll",[datess objectAtIndex:0]); 


    for(int j=0;j<[newinx count];j++) 
    { 


     if([str isEqualToString:[datess objectAtIndex:j]]) 
     { 


       //tv.text =[Tips objectAtIndex:day]; 
      [email protected]"helloo"; 

     } 

但这种比较不起作用。任何人都可以帮助我please.thanks提前。

+0

可以PLZ粘贴你的代码中,你将它添加到阵列,并保存到用户默认? – saadnib

+0

NSLog(@“isssssss%@”,datearray); NSUserDefaults * currentDefaults = [NSUserDefaults standardUserDefaults]; [currentDefaults setObject:[NSKeyedArchiver archivedDataWithRootObject:datearray] forKey:@“datesaving”]; [currentDefaults synchronize]; – ishhhh

+0

@ saadnib,这是我如何保存在数组 – ishhhh

回答

0

为什么你有intValueNSLog(@"kykykykyky%d",[[datess objectAtIndex:0]intValue]);?如果你摆脱了这一点(假设你已经在NSUserdefaults中正确保存了消息字符串),它应该像以前一样输出相同的字符串。

+0

@ thanks.can你告诉我如何 – ishhhh

0

为什么不保存NSDate对象,由UIDatePicker返回NSUserDefaults?只是把它放在那里&用于比较 - 没有unarchiving是必要的。它会更简单。

只有在需要显示时才使用NSDateFormatter进行转换。

0
NSDate *now = [NSDate date]; 
Compare the 2 dates with: 

    if ([d compare:now] == NSOrderedDescending) { 
     // d is later than now 
    }else{ 
     // d is earlier than or equal to now 
    } 
0

在这里,你会错了...

NSLog(@"kykykykyky%d",[[datess objectAtIndex:0]intValue]); 

您datess数组包含字符串对象,然后,如果你想将它转换成NSDate对象,然后使用NSDateFormatter这一点。

首先NSLog从datess数组对象 -

NSLog(@"date str = %@",[datess objectAtIndex:0]); 

确认日期字符串正确保存。

然后做一个NSDateFormatter对象并设置其日期格式 -

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 

[dateFormatter setDateFormat:@"MM-dd-yyyy hh:mm a"]; 

,或者你可以用ant格式式样。然后再使用这张NSDateFormatter作为

NSDate *date = [dateFormatter dateFromString:[datess objectAtIndex:0]]; 

它会给你一个NSDate对象NSDate对象。

比较两个NSDate对象使用 -

- (BOOL)date:(NSDate*)date isBetweenDate:(NSDate*)beginDate andDate:(NSDate*)endDate 
{ 
    if ([date compare:beginDate] == NSOrderedAscending) 
     return NO; 

    if ([date compare:endDate] == NSOrderedDescending) 
     return NO; 

    return YES; 
} 
+0

@ saadnib.thanks你的好手。我试图做的是将所有日期和时间保存到数组中,并搜索当前和在该阵列中的时间,如果是这样,发射本地通知。 – ishhhh

+0

@ saadnib.is有什么不对。 – ishhhh

+0

这里没有什么不对,但是你必须照顾一件事情,那就是你保存日期和时间的格式是你使日期格式相同。 – saadnib