修剪NSDate只显示date

我已经通过了所有类似的问题,不幸的是不能解决我的问题,所以我问了这个问题。 我需要我的函数返回一个NSDate和唯一的date,但我的返回值包含时间以及,我已经尝试setTimeStyle noStyle和我可以想出的每一个可能的解决scheme,这里是代码:

 -(NSDate*)stringToDate{ NSString *dateString = @"01-02-2010"; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"dd-MM-yyyy"]; NSDate *date; date = [dateFormatter dateFromString:dateString]; NSLog(@"%@",date); return date; } 

输出结果是: 2010-01-31 16:00:00 +0000

我想要什么: 2010-01-31

这不能工作,当你打印一个NSDate对象时,它会打印整个date。 从date获取string表示的方式是使用NSDateFormatter

 NSDateFormatter *format = [[NSDateFormatter alloc] init]; format.dateFormat = @"dd-MM-yyyy"; NSLog(@"%@", [format stringFromDate:[NSDate new]]); 

如果你愿意,你可以把它放在NSDate的类别中。

 NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"yyyy-MM-dd"]; NSDate *now = [[NSDate alloc] init]; NSString *theDate = [dateFormat stringFromDate:now]; NSLog(@"%@",theDate); 

NSDate总是date和时间的组合。 你不能改变这个格式。 但是如果你想要一个你提到的输出,你必须把它转换成NSString只需添加下面的代码

 NSLog(@"%@", [dateFormatter stringFromDate:date]); 

抓住前10个字符的子string。 看看NSMakeRange和subStringWithRange 。

 NSString* dateOnlyAsString = [[[NSDate date] description] substringWithRange:NSMakeRange(0, 10)]; 

看到问题如何获得NSString的子string? 。

 NSDateFormatter *df = [[NSDateFormatter alloc] init]; [df setDateFormat:@"dd-MM-yyyy"]; NSDate *convertedDate = [df dateFromString:datestring1]; NSLog(@"convertedDate....%@",convertedDate); [df setDateFormat:@"dd-MM-yyyy"]; NSString *date1= [df stringFromDate:convertedDate]; 
  UIDatePicker *datepicker = [[UIDatePicker alloc]initWithFrame:CGRectMake(0, 250, 320, 60)]; datepicker.datePickerMode = UIDatePickerModeDate; NSDate *date = datepicker.date; NSDate *date1 = [NSDate date]; NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init]; [dateFormat setDateFormat:@"yyyy-MM-dd"]; // convert it to a string NSString *dateString = [dateFormat stringFromDate:date1]; NSLog(@"date %@",dateString); datelabel.text =dateString; NSLog(@"text in the datelabel.text is %@",datelabel.text); 

尝试使用下面的工作fine.if它不工作让我知道。