iOS:UIDatePicker以阿拉伯语返回日期

时间:2017-03-09 10:46:19

标签: ios objective-c datepicker localization arabic

我的手机语言是阿拉伯语,但我想用英语选择日期。我使用日历以及日期选择器的区域设置属性,但没有一个工作。我想用英文约会。我的代码如下:

 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但我只想用英文输出,以便我可以在服务器上存储所选日期

3 个答案:

答案 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 *)descriptionNSObject的方法,当NSObject的子类'转换为字符串'时调用该方法。 NSDate本身并不包含任何区域设置信息。但NSDate的描述方法会创建格式化程序并使用系统的区域设置。

如果您希望它位于UI的某个位置,则不应使用默认描述方法,您必须创建自己的DateFormatter以使用正确的区域设置和格式格式化输出。

或者,您可以对NSDate进行扩展,并使用自定义的DateFormatter覆盖描述功能。