任务:显示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
非常感谢任何解决方案或链接。
答案 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更改为您要查找的任何格式。