3

我已经解决了所有类似的问题,不幸的是无法解决我的问题,所以我问了。我需要我的函数来返回一个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

4

6 回答 6

11

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

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

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

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

于 2013-11-14T04:56:22.487 回答
0

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

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

请参阅问题如何获取 NSString 的子字符串?.

于 2013-11-14T04:55:16.647 回答
0
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];

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

NSString *theDate = [dateFormat stringFromDate:now];

NSLog(@"%@",theDate);
于 2013-11-14T04:58:13.287 回答
0

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

NSLog(@"%@", [dateFormatter stringFromDate:date]);
于 2013-11-14T05:04:04.930 回答
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];
于 2013-11-14T05:12:18.713 回答
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);

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

于 2013-11-14T06:32:11.577 回答