修剪NSDate仅显示日期

时间:2013-11-14 04:47:24

标签: ios iphone objective-c nsdate nsdateformatter

我已经完成了所有类似的问题,不幸的是非解决我的问题所以我问过它。我需要我的函数返回一个NSDate和唯一的日期,但我的返回值也包含时间,我已经尝试了setTimeStyle noStyle以及我能提出的每个可能的解决方案,这里是代码:

-(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

6 个答案:

答案 0 :(得分:11)

这不起作用,当您打印NSDate对象时,它将打印整个日期。 从日期获得字符串表示的方式是使用NSDateFormatter

NSDateFormatter *format = [[NSDateFormatter alloc] init];
format.dateFormat = @"dd-MM-yyyy";

NSLog(@"%@", [format stringFromDate:[NSDate new]]);

如果您愿意,可以将其放在NSDate的类别中。

答案 1 :(得分:0)

抓取前10个字符的子字符串。查看NSMakeRangesubStringWithRange

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

请参阅问题How to get substring of NSString?

答案 2 :(得分:0)

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];

NSDate *now = [[NSDate alloc] init];

NSString *theDate = [dateFormat stringFromDate:now];

NSLog(@"%@",theDate);

答案 3 :(得分:0)

NSDate 始终是日期和时间的组合。你不能改变这种格式。但如果您想要一个提到的输出,则必须将其转换为NSString 只需添加以下代码

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

答案 4 :(得分:0)

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];

答案 5 :(得分:0)

    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);

尝试通过以下方式使用它的工作正常。如果它不起作用,请告诉我。