繁体   English   中英

从字符串设置uidatepicker日期

[英]set uidatepicker date from string

问题已更新:

我有一个应用程序,用户可以在其中添加新的工作坊,包括他从UIDatePicker选择的工作坊日期。 之后,用户可以编辑车间的信息,包括更改日期。 我要尝试的操作如下:1.读取用户添加新工作坊时从UIDatePicker选择的时间。 2.将日期转换为字符串并将其保存在数据库中。 3.当用户想要编辑研讨会时,我应该从数据库中检索研讨会的日期,并将其从字符串转换为NSDate 4.在“编辑”界面中将UIDatePicker设置为我刚创建的NSDate

我认为这听起来合乎逻辑。 但是,它对我不起作用,我不确定为什么。 这是代码:

AddWorkshop.m类中

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateStyle:NSDateFormatterMediumStyle];
 //WSDate is a NSString variable
self.WSDate = [dateFormat stringFromDate:[sender date]];

EditWorkshop.m类中

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
 [df setDateStyle:NSDateFormatterMediumStyle];
NSDate *date1 = [df dateFromString: self.WSDate];
[self.datePicker setDate:date1];

问题是:

  1. UIDatePicker日期不会更改为指定的日期,它始终显示今天的日期。

  2. 当我尝试使用NSLog date1和self.WSDate时,date1的值总是比self.WSDate的值少一天

  3. 我在[UIDatePicker setDate:NSDate]中传递的日期是否有特定的格式? 例如:是否必须为“ MMMM dd yyyy”或“ mm-dd-yyyy”或任何格式都可以?

广告1:您要在其中更新UIDatePicker viewDidLoad仅在加载视图时调用一次。 因此,这可能是您遇到的问题。 尝试从viewWillAppear:viewDidAppear:调用方法viewDidAppear:

广告2:这很可能是时区问题。 尝试将日期存储为NSDate而不是在NSDateNSString之间来回转换。

广告3: setDate:需要NSDate ,没有格式。 可以将其视为一个整数。

切勿将NSDate作为NSString存储在数据库中,请始终尝试像存储核心数据一样将其作为时间戳存储。

对于下面给出的当前问题,代码将为您提供帮助,我在UIButton上使用IBAction ,它将在UIDatePicker控件中显示转换后的NSString日期。

- (IBAction)buttonPressed:(id)sender{

// set date of picker from string
NSDate *convertedDate = [self convertStringToDate];
if (convertedDate!=nil) {
    [self.datePicker setDate:convertedDate animated:YES];
}else{
    // Display any error here
}
  }

- (NSDate*)convertStringToDate{
    NSDateFormatter *SDF = [[NSDateFormatter alloc]init];
    [SDF setDateStyle:NSDateFormatterMediumStyle];
    NSDate *convertedDate = [SDF dateFromString:[self convertTodaysDateintoString]];
    return convertedDate;
   }

- (NSString*)convertTodaysDateintoString{
NSDateFormatter *df = [[NSDateFormatter alloc]init];
[df setDateStyle:NSDateFormatterMediumStyle];
NSString *str = [df stringFromDate:[self getTodaysDate]];
return str;
}

- (NSDate*)getTodaysDate{
return [NSDate date];
}

对于第2个问题,请验证您的时区,到目前为止,我不确定第3个问题,我还没有看到UIDatePicker任何特定日期格式,它只接受NSDate

对于3,我建议检查UIDatePicker模式,也尝试在XIB / storyboard属性检查器中将本地设置为默认值。

UIDate Picker的XIB属性

经过几周的尝试,我发现问题是我正在viewDidLoad分配和初始化我的UIDatePicker

self.datePicker = [[UIDatePicker alloc]init];

因此,当我使用[datePicker setDate: date]; 这是行不通的。 我不知道为什么。 但这对我来说就是这样。 我刚刚删除了self.datePicker = [[UIDatePicker alloc]init]; 并且setDate方法起作用。

如果有人可以解释为什么分配UIDatePicker会使setDate方法无法正常工作,我会很高兴。 我认为我需要分配所有新对象才能使用它们,因为例如,当我创建一个新的NSMutableArray ,如果不先分配它就无法向其添加对象。 谢谢大家的努力。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM