我有一个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
对象中的键,我只需要月份和日期,年份和时间并不重要。
答案 0 :(得分:0)
无需定义时区& locale,它将自动从您的系统中获取。 使用相同的代码而不会删除语言环境和时区,我希望它能为你工作......
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd"];
NSString *dateString = [dateFormatter stringFromDate:self.datePicker.date];