2012-11-19 36 views
1

如果我对时间不感兴趣,我可以忽略它吗? I.e我有一个日期字符串,看起来像这样@"2012-12-19T14:00:00",但我只对获取日期(2012-12-19)感兴趣,但如果我设置NSDateFormatter就像[dateFormatter setDateFormat:@"yyyy-MM-dd"];它会返回我没有NSDateObjective-C - NSDateFormatter dateFromString忽略时间

回答

3

一个NSDate对象将总是包含的时间成分为好,因为它是再版表示一个时间点 - 从这个角度来看,人们可能会认为NSDate的名称有误导性。

您应该创建一个日期格式化程序,用于从字符串创建日期,将时间设置为一天的开始时间,并使用第二个日期格式化程序输出没有时间组件的日期。

NSString *dateString = @"2012-12-19T14:00:00"; 

NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init]; 
[inputFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"]; 

NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init]; 
[outputFormatter setDateStyle:NSDateFormatterShortStyle]; 
[outputFormatter setTimeStyle:NSDateFormatterNoStyle]; 

NSDate *date = [inputFormatter dateFromString:dateString]; 

//this will set date's time components to 00:00 
[[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit 
           startDate:&date 
           interval:NULL 
            forDate:date]; 

NSString *outputString = [outputFormatter stringFromDate:date]; 

NSLog(@"%@", outputString); 

结果

19.12.12 

而格式 - 因为它是由造型选择 - 将取决于您的环境区域的

+0

我落得这样做:'NSString * event = [event substringToIndex:10]; //删除时间''[dateFormatter setDateFormat:@“yyyy-MM-dd”];''NSDate * eventDate = [dateFormatter dateFromString:event];'这是一个好的解决方案吗? –

+0

我认为这是可能的最大丑陋解决方案。你应该把日期和时间当作NSDates。这也不会给你任何本地化和时区处理的灵活性。 – vikingosegundo

+0

您是否确实需要将时间分量设置为'00:00'?难道你不能把TimeStyle作为'NoStyle'离开吗? –

-1

所有日期字符串返回10个字符之日起,我的意思是todayy的日期将是2012年11月19日

您可以轻松地串日期和使用它,只要你想:

例如:

NSString* newDate = @""; 
    newDate = [[NSDate date]substringToIndex:10]; 

的出放将是:2012-11-19

+5

我看到了崩溃的道路...... – vikingosegundo

相关问题