iPhone日期选择器,如何访问个别项目

时间:2010-07-05 23:16:57

标签: iphone uidatepicker

任务:显示UIDatePicker并获取所选日期,然后在标签中显示所选日期(格式为日,月,年)。

当前进展:

-(IBAction)pressButton:(id)sender
{
    NSDate *selected = [datePicker date];
    NSString *message = [[NSString alloc] initWithFormat:@"%@", selected];

    date.text = message;
}

这将以YYYY-MM-DD 23:20:11 +0100的格式显示日期。我不想显示时间。我还想以不同的格式显示日期。

是否可以访问日期选择器的各个组件,即。 datePicker.month

非常感谢任何解决方案或链接。

4 个答案:

答案 0 :(得分:2)

如果您正在谈论访问日期选择器的各个组件,则不能。 UIDatePicker不从UIPickerView继承,因此它们没有API。但是,文档确实声明UIDatePicker“管理自定义选择器视图对象作为子视图”,这意味着您可以遍历UIDatePicker的子视图,直到找到UIPickerView。但请注意,这是非常危险的。

答案 1 :(得分:1)

你想要的是descriptionWithCalendarFormat:timeZone:locale:方法。见Apple's description of the method.

例如,要以YYYY-MM-DD格式显示日期,您可以使用:

NSString *message = [selected descriptionWithCalendarFormat: @"%Y-%m-%d" timeZone: nil locale: nil]

我认为这里的格式字符串使用与C标准库中的strptime相同的标记,但是知道Apple可能会有一些小的差异。该格式的说明是here.

您还可以使用NSDateFormatter类'stringFromDate: method.它使用不同的格式(Unicode格式)。我相信它是在Objective C中格式化日期字符串的“首选”方式,但使用它可能有点复杂。

最后,有关提取单个NSDate组件的信息,请参阅this SO question

希望有所帮助。

答案 2 :(得分:1)

NSDate *selected = [picker date];
NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];

//Set the required date format

[formatter setDateFormat:@"yyyy-MM-dd"]; //MM returns name of month small mm return the number.

//Get the string date

NSString* date = [formatter stringFromDate:selected];

//Display on the console

NSLog(@"%@",date);

答案 3 :(得分:0)

Datepicker是一个特殊情况uipickerview,所以你可以在每个组件中获取值,但我不在Xcode前面验证。

但是,您可以使用NSDateFormatter将返回给您的nsdateformatter更改为您要查找的任何格式。