1

“2010 年 12 月 31 日上午 9:00 至下午 1:00”

以上面的 NSString 为例,我需要将其转换为 2 个 NSDates,例如 31-Dec-2010 9:00AM 和 31-Dec-2010 1:00PM

然后将其与当前日期进行比较,以查看当前日期是否在给定日期内。

所以 2010 年 12 月 31 日上午 10:00 将在范围内。

我想知道 Objective C 的最佳实践/技巧是什么?

4

2 回答 2

2

事实证明,NSDateFormatter 有一个 dateFromString 方法,它完全符合您的要求。

http://blog.evandavey.com/2008/12/how-to-convert-a-string-to-nsdate.html

NSDateFormatter 的官方文档:

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html

于 2011-01-05T23:51:08.507 回答
0

我最终这样做了:

    NSString *temp = [[dateString allValues] objectAtIndex:0];

    NSLog(@"temp: %@", temp);


    NSArray *tokens = [temp componentsSeparatedByString: @" "];


    NSArray *tokenOneDelimited =  [[tokens objectAtIndex:0] componentsSeparatedByString: @"-"];


    NSString *dateStr1 = [NSString stringWithFormat: @"%@-%@-%@ %@",    [tokenOneDelimited  objectAtIndex:2],
                                                                        [tokenOneDelimited  objectAtIndex:1],
                                                                        [tokenOneDelimited  objectAtIndex:0],
                                                                        [tokens             objectAtIndex:1]];

    NSString *dateStr2 = [NSString stringWithFormat: @"%@-%@-%@ %@",    [tokenOneDelimited  objectAtIndex:2],
                          [tokenOneDelimited    objectAtIndex:1],
                          [tokenOneDelimited    objectAtIndex:0],
                          [tokens               objectAtIndex:3]];

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

    [dateFormatter setDateFormat:@"yyyy-MMM-dd hh:mma"];

    NSDate *myDate1 = [dateFormatter dateFromString: dateStr1];

    NSDate *myDate2 = [dateFormatter dateFromString: dateStr2];

    NSDate *currentDate = [NSDate date];

    NSComparisonResult comparison = [currentDate compare: myDate1];

    NSComparisonResult comparison2 = [currentDate compare: myDate2];


    if ( 
        comparison      == NSOrderedDescending &&
        comparison2     == NSOrderedAscending
        )
    {
        NSLog(@"is On now");
于 2011-01-06T02:36:44.047 回答