我的手机语言是阿拉伯语,但我想用英语选择日期。我使用日历以及日期选择器的区域设置属性,但没有一个工作。我想用英文约会。我的代码如下:
UIDatePicker *datePicker = [[UIDatePicker alloc]init];
[datePicker setFrame:CGRectMake(0, 100, self.view.frame.size.width, 216.0)];
datePicker.datePickerMode = UIDatePickerModeDate;
[datePicker setLocale: [NSLocale localeWithLocaleIdentifier:@"en_US"]];
[datePicker addTarget:self action:@selector(updateDateField:) forControlEvents:UIControlEventValueChanged];
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
[datePicker setCalendar:gregorianCalendar];
[self.view addSubview:datePicker];
-(void)updateDateField : (UIDatePicker*)datePicker{
NSLog(@"____ %@",datePicker.date);}
输出结果是:2014-03-09 10:36:41 +0000但我只想用英文输出,以便我可以在服务器上存储所选日期
答案 0 :(得分:1)
您需要使用 DateFormatter 。我现在不需要将您的需求发送到服务器的格式。所以这是苹果的例子:
let RFC3339DateFormatter = DateFormatter()
RFC3339DateFormatter.locale = Locale(localeIdentifier: "en_US_POSIX")
RFC3339DateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
RFC3339DateFormatter.timeZone = TimeZone(forSecondsFromGMT: 0)
let date = Date()
let string = RFC3339DateFormatter.stringFromDate(date)
答案 1 :(得分:0)
尝试使用NSDateFormatter并将语言环境设置为它,然后从dateController和您已有的日期获取stringFromDate。
答案 2 :(得分:0)
NSLog(@"____ %@",datePicker.date)
会调用datePicker.date.description
来格式化输出字符串。默认的NSDate
描述将使用系统默认语言环境,这就是您输入阿拉伯语的原因。
-(NSString *)description
是NSObject
的方法,当NSObject
的子类'转换为字符串'时调用该方法。 NSDate
本身并不包含任何区域设置信息。但NSDate
的描述方法会创建格式化程序并使用系统的区域设置。
如果您希望它位于UI的某个位置,则不应使用默认描述方法,您必须创建自己的DateFormatter
以使用正确的区域设置和格式格式化输出。
或者,您可以对NSDate
进行扩展,并使用自定义的DateFormatter
覆盖描述功能。