更改datepicker的格式

时间:2013-02-19 20:32:47

标签: datepicker uitextfield

如何将日期格式更改为yy/mm/dd

这是我到目前为止所做的:

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
  if (textField == _celebration)
  {
      UIDatePicker *datePicker = [[UIDatePicker alloc]init];
      [datePicker setDate:[NSDate date]];
      [datePicker addTarget:self action:@selector(updateTextField:) forControlEvents:UIControlEventValueChanged];
      [self.celebration setInputView:datePicker];
  }
}

- (void)updateTextField:(id)sender
{
  UIDatePicker *picker = (UIDatePicker*)self.celebration.inputView;
  self.celebration.text = [NSString stringWithFormat:@"%@",picker.date];
}

1 个答案:

答案 0 :(得分:1)

制作一个像这样的格式化程序

NSDateFormatter* format = [[NSDateFormatter alloc]init];
[format setDateFormat:@"YY/MM/dd"];

从像这样的NSDate中获取格式化的字符串

NSString* testDate = [format stringFromDate:[NSDate date]];

从类似字符串中获取NSDate。

NSDate* reformDate = [format dateFromString:testDate];

如果不在ARC中,则释放,否则设置为nil     [格式发布];或格式= nil;

你可以修改你的功能看起来像这样。这会将格式化的日期字符串设置为UITextField的文本。

- (void)updateTextField:(id)sender
{
    UIDatePicker *picker = (UIDatePicker*)self.celebration.inputView;

    NSDateFormatter* format = [[NSDateFormatter alloc]init];
    [format setDateFormat:@"YY/MM/dd"];

    NSString* formattedDate = [format stringFromDate:picker.date];

    self.celebration.text = formattedDate;

    format = nil;
}

据说UIDatePicker本身并不支持这样的格式化。你可以在这里参考课程。 UIDatePicker Class Reference

如果您真的为datePicker设置了此格式,则可能需要构建自定义格式。但是,我不鼓励这样做,因为内置的UIDatepicker会自动考虑用户的区域设置和语言,而您的格式会将其锁定为您的首选格式(对于您的用户而言,这取决于他们的位置是否正确在世界上。)