我有 UIDatePicker
设置为只选择一个日期(没有时间) . 我想获取用户选择的值并重新格式化 . 我得到的 Value 包括日期,时间和时区 .
我有一个 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
don 't include the timezone. But, Apple'的文档非常明确地说 UIDatePicker
的 date
属性返回 NSDate
.
我还做了一些日志记录,看看究竟返回了什么类型,我发现有一个微妙的区别:
NSLog("%@", [self.datePicker.date class]); // logs "__NSDate"
NSLog("%@", [NSDate class]); // logs "NSDate"
有没有人遇到这个,如果是这样你做了什么来格式化 NSDate
?我正在尝试将日期格式化为 MM/dd
以用作 NSDictionary
对象中的键,我只需要月份和日期,年份和时间并不重要 .
1 回答
无需定义时区和区域设置,它将自动从您的系统中获取 . 使用相同的代码而不会删除语言环境和时区,我希望它对你有用...