【问题标题】:iOS set default date to date picker?iOS将默认日期设置为日期选择器?
【发布时间】:2012-11-06 08:30:19
【问题描述】:

我有一个与文本字段关联的日期选择器。文本字段的值类似于 11 月 22 日星期四(从服务器调用接收的字符串)。 现在我希望当我点击文本字段时,日期选择器应该播种显示在文本字段中的默认日期。 我想我必须打电话给[datePicker setDate:date animated:YES];,但问题是如何将字符串Thursday,11 月22 日 转换为NSDate? 提前致谢。

【问题讨论】:

    标签: objective-c ios uidatepicker


    【解决方案1】:

    我假设你想在你的日期是当前年份:

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"yyyy"];
    NSString *yeardate = [dateFormat stringFromDate:[NSDate date]];
    
    NSString *string = @"Thursday, November 22nd";
    if ( [string length] > 0)
      string = [string substringToIndex:[string length] - 2];
    
    NSString *finalstr = [NSString stringWithFormat:@"%@ %@",string,yeardate];
    [dateFormat setDateFormat:@"EEEE,MMMM dd yyyy"];
    
    NSDate *date = [dateFormat dateFromString:finalstr];
    NSLog(@"%@",date);
    

    【讨论】:

    • 那么“1st, 3rd, 4th”呢?
    • 对于“11 月 22 日星期四”,结果日期为 1970-11-22。
    • @Prince 有什么方法可以在我得到 2000-11-21 18:30:00 +0000 时添加当前年份,否则你的回答是可以接受的......谢谢!
    【解决方案2】:

    你可以按照下面的代码sn-p

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"EEEE MMMM d, yyyy"];
    NSString *dateStr;
    NSDate *date;
    
    date  = [NSDate date];
    dateStr= [formatter stringFromDate:date];
    NSLog(@"%@", dateStr); // -> Tuesday November 6, 2012
    
    
    
    
    dateStr= @"Tuesday November 6, 2012";
    date = [formatter dateFromString:dateStr];
     NSLog(@"%@",date); // -> 2012-11-05 18:15:00 +0000
    

    【讨论】:

    • 谢谢,但我的字符串是 10 月 7 日星期日,并且会有所不同
    • 在这种情况下,您可以参考 ICU 日期和时间格式以获取所有可能的日期格式选项。