[英]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];
问题是:
UIDatePicker
日期不会更改为指定的日期,它始终显示今天的日期。
当我尝试使用NSLog date1和self.WSDate时,date1的值总是比self.WSDate
的值少一天
我在[UIDatePicker setDate:NSDate]中传递的日期是否有特定的格式? 例如:是否必须为“ MMMM dd yyyy”或“ mm-dd-yyyy”或任何格式都可以?
广告1:您要在其中更新UIDatePicker
viewDidLoad
仅在加载视图时调用一次。 因此,这可能是您遇到的问题。 尝试从viewWillAppear:
或viewDidAppear:
调用方法viewDidAppear:
广告2:这很可能是时区问题。 尝试将日期存储为NSDate
而不是在NSDate
和NSString
之间来回转换。
广告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属性检查器中将本地设置为默认值。
经过几周的尝试,我发现问题是我正在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.