首页 文章

从UIDatePicker返回的格式化日期

提问于
浏览
2

我有 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'的文档非常明确地说 UIDatePickerdate 属性返回 NSDate .

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

NSLog("%@", [self.datePicker.date class]); // logs "__NSDate"
NSLog("%@", [NSDate class]); // logs "NSDate"

有没有人遇到这个,如果是这样你做了什么来格式化 NSDate ?我正在尝试将日期格式化为 MM/dd 以用作 NSDictionary 对象中的键,我只需要月份和日期,年份和时间并不重要 .

1 回答

  • 0

    无需定义时区和区域设置,它将自动从您的系统中获取 . 使用相同的代码而不会删除语言环境和时区,我希望它对你有用...

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

相关问题