从UIDatePicker返回的格式化日期

时间:2014-03-08 20:07:33

标签: ios nsdate nsdateformatter uidatepicker

我有一个UIDatePicker,只需选择一个日期(没时间)。我想获取用户选择的值并重新格式化。我得到的价值包括日期,时间和时区。

我准备了NSDateFormatter我想要的语言环境和格式。问题是当我尝试格式化日期时,格式化程序的方法调用返回nil:

NSDate *pickedDate = self.datePicker.date;
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale: [[NSLocale alloc] initWithLocaleIdentifier: @"en_US"]];
[formatter setDateFormat: @"MM/dd"];

NSString *formattedDate = [formatter stringFromDate: pickedDate]; // nil

看起来self.datePicker.date返回的值已经被格式化为字符串。我读过NSDates不包含时区。但是,Apple的文档非常清楚地表明date的{​​{1}}属性返回UIDatePicker

我还做了一些日志记录,看看究竟返回了什么类型,我发现有一个微妙的区别:

NSDate

有没有人遇到过这个问题,如果有的话,你做了什么来格式化NSLog("%@", [self.datePicker.date class]); // logs "__NSDate" NSLog("%@", [NSDate class]); // logs "NSDate" ?我正在尝试将日期格式化为NSDate以用作MM/dd对象中的键,我只需要月份和日期,年份和时间并不重要。

1 个答案:

答案 0 :(得分:0)

无需定义时区& locale,它将自动从您的系统中获取。 使用相同的代码而不会删除语言环境和时区,我希望它能为你工作......

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd"];
NSString *dateString = [dateFormatter stringFromDate:self.datePicker.date];