ios - UIDatePicker 作为 inputView

标签 ios objective-c uitextfield uidatepicker

我在 UIDatePicker 作为 inputView 时遇到两个问题。

1:当我在 datePicker 中选择“April 17 9 00 PM”时,
dateTextField 输出“2014-04-107 21:00:00”。

2:我国的UTC是+0900。
但是,NSLog 输出“2014-04-17 12:00:00 +0000”。

如何解决这些问题?

@property IBOutlet UITextField* dateTextField;
@property IBOutlet UIDatePicker* datePicker;
@property UIToolbar* toolBar;

- (void)viewDidLoad
{
    self.datePicker = [[UIDatePicker alloc]initWithFrame:CGRectMake(0, 600, 320, 216)];
    [self.view addSubview:self.datePicker];
    self.toolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, -40, 320, 40)];
    self.toolBar.barStyle = UIBarStyleBlackOpaque;
    UIBarButtonItem* doneButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dateTextFieldShouldReturn)];
    NSArray* finishBarItems = [NSArray arrayWithObjects:doneButton, nil];
    [self.toolBar setItems:finishBarItems animated:YES];

    self.dateTextField = [[UITextField alloc]initWithFrame:CGRectMake(40, 293, 250, 30)];
    self.dateTextField.delegate = self;
    self.dateTextField.inputView = self.datePicker;
    self.dateTextField.inputAccessoryView = self.toolBar;
    [myScrollView addSubview:self.dateTextField];
}

- (void)dateTextFieldShouldReturn
{
    NSDateFormatter* formatter = [[NSDateFormatter alloc]init];
    [formatter setDateFormat:@"yyyy-MM-DD HH:mm:ss"];
    NSString* dateString = [formatter stringFromDate:self.datePicker.date];
    [self.dateTextField setText:dateString];
    [self.dateTextField resignFirstResponder];

    NSDate* date = [formatter dateFromString:self.dateTextField.text];
    NSLog(@"%@", date);
}

最佳答案

就像这对我有用:

- (void)dateTextFieldShouldReturn
{
    NSDateFormatter* formatter = [[NSDateFormatter alloc]init];

    [formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"]];
    [formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss zzz"];


    NSString* dateString = [formatter stringFromDate:self.datePicker.date];
    [self.dateTextField setText:dateString];
    [self.dateTextField resignFirstResponder];

    NSDate* date = [formatter dateFromString:self.dateTextField.text];
    NSLog(@"%@", date);
}

关于ios - UIDatePicker 作为 inputView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23132695/

相关文章:

ios - 在 Swift 中覆盖 CALayer 的 initWithLayer

objective-c - Plist不会写入文件

objective-c - 为 NSMutableArray 分配浮点值

ios - UITextfield 在编辑模式下从顶部被剪切

IOS:如何删除navigationbar默认的半透明效果?

ios - 延迟次级子 UIViewController 预加载以实现超快速应用程序加载的最佳方法?

ios - 如何在没有完成处理程序的情况下快速从非泛型方法调用泛型方法

ios - swift 2.1 alamofire超时方法

ios - 是否可以将图像或 xib 设置为文本字段中的值?

ios - 将动态文本字段单元格插入 TableView 中的部分 - Swift