2012-01-20 15 views
5

Tôi đang sử dụng DatePicker với cửa sổ bật lên khi người dùng nhấp vào textField. Tuy nhiên, Picker hiển thị tháng đầu tiên, không phải ngày đầu tiên và nó không phải là cách của Anh để viết một ngày. Có cách nào để đặt định dạng ngày trong DatePicker theo cách của Anh như dd/mm/yyyy không? Tôi đang sử dụng một Achtionsheet:iPhone: DatePicker dd/mm/yyyy

-(IBAction)acsheet:(id)sender 
{ 

    actionSheet = [[UIActionSheet alloc] initWithTitle:nil 
               delegate:nil 
            cancelButtonTitle:nil 
           destructiveButtonTitle:nil 
            otherButtonTitles:nil]; 
    [actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent]; 

    //CGRect pickerFrame = CGRectMake(0, 45, 0, 0); 
    pickerView1 = [[UIDatePicker alloc] init]; 
    pickerView1.datePickerMode = UIDatePickerModeDate; 

    [actionSheet addSubview:pickerView1]; 

    UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Close"]]; 
    closeButton.momentary = YES; 
    closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f); 
    closeButton.segmentedControlStyle = UISegmentedControlStyleBar; 
    closeButton.tintColor = [UIColor blackColor]; 
    [closeButton addTarget:self action:@selector(dismissActionSheet:)      
         forControlEvents:UIControlEventValueChanged]; 
    [actionSheet addSubview:closeButton]; 
    [actionSheet showInView:[[UIApplication sharedApplication] keyWindow]];  
    [actionSheet setBounds:CGRectMake(0, 0, 320, 485)]; 

    [pickerView1 addTarget:self 
        action:@selector(updateLabel:) 
      forControlEvents:UIControlEventValueChanged]; 

    UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 
    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissDatePicker:)] ; 
    UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height, 320, 44)]; 
    toolBar.tag = 11; 
    toolBar.barStyle = UIBarStyleBlackTranslucent; 

    [toolBar setItems:[NSArray arrayWithObjects:spacer, doneButton, nil]]; 
    [self.view addSubview:toolBar]; 

} 

Trả lời

17

UIDatePicker, theo mặc định, sử dụng bất kỳ mệnh đề [NSLocale currentLocale] nào.

Các tài sản trên UIDatePickerlocale đã bị phản đối trong iOS 5, nhưng tôi tin rằng bạn có thể làm như sau:

NSCalendar *cal = [NSCalendar currentCalendar]; 
cal.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"]; 
myDatePicker.calendar = cal; 

việc nên này. Nếu không, vui lòng file a bug và tôi sẽ sửa chữa. :)

+0

Cảm ơn, tôi sẽ cố gắng này !!! – user973067

+2

Cảm ơn Dave, nhưng điều này không hoạt động vì một lý do nào đó. Bất cứ ai khác với dilema này? Tôi thấy câu trả lời của BBog ở đây và có vẻ khá chán nản: http://stackoverflow.com/questions/9638698/ios-change-language-for-uidatepicker-by-locale – Stavash

+0

Điều này dường như không hoạt động – sapatos

2

Khi viết các tháng trong văn bản người Anh có lẽ sẽ đặt tháng đầu tiên (hoặc ít nhất là nó sẽ được chấp nhận).

Nhưng để trả lời câu hỏi của bạn, tôi không biết cách thay đổi định dạng hiển thị của công cụ chọn ngày, nhưng bạn có thể làm cho bạn sở hữu bằng UIPickerView với đại biểu và nguồn dữ liệu tùy chỉnh.

+0

không ..... ngày đầu tiên ... này tôi không đánh dấu bạn! ;-) – Damo

+0

ngày đầu tiên khi ngày giống như 20/01/11 nhưng viết ngày 20 tháng 1 năm 2011 có lẽ là ok (tuyên bố từ chối trách nhiệm: Tôi không phải người Anh, nhưng tôi sống ở Vương quốc Anh ...) – wattson12

+0

Cảm ơn. có ngày đầu tiên của thời gian, nhưng tháng đầu tiên sẽ được chấp nhận (Nó chỉ gây nhầm lẫn khi mọi người viết theo cách của Mỹ như 05/07/2012) Cảm ơn lời đề nghị của bạn anyway. – user973067

7

UIDatePicker được tạo để thích ứng với cài đặt của người dùng. Thay đổi định dạng của nó bằng phương pháp locale: là có thể nhưng hiện không được chấp nhận trong iOS 5.0.

Bạn có thể xem định dạng của bạn trong các thiết lập của iPhone của bạn:

Settings> General> International> Format Region

Nếu bạn muốn có một định dạng cụ thể, xem xét việc chọn riêng của bạn, nhưng nó rất nản lòng với bộ chọn ngày.

+0

cảm ơn tôi đã thử trên một thiết bị và nó được mô tả theo cách của Anh. – user973067