问题更新:
我有一个应用程序,用户可以在其中添加一个新的研讨会,包括他从 UIDatePicker
中选择的研讨会日期 . 之后,用户可以编辑研讨会的信息,包括更改日期 . 我要做的是以下内容:1 . 在他添加新工作室时,阅读用户从 UIDatePicker
中选择的时间 . 2.将日期转换为字符串并将其保存在数据库中 . 3.当用户想要编辑研讨会时,我应该从数据库中检索研讨会的日期并将其从字符串转换为 NSDate
. 4.将Edit界面中的 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 date would not change 到指定日期,它始终显示今天的日期 .
-
当我尝试NSLog date1和self.WSDate时,date1的值总是 one day less 然后是
self.WSDate
的值 -
是否有我在[UIDatePicker setDate:NSDate]中传递的日期的特定格式?例如:它必须是“MMMM dd yyyy”或“mm-dd-yyyy”或任何格式都可以吗?
3 回答
您要更新
UIDatePicker
的广告1:viewDidLoad
仅在加载视图时调用一次 . 所以这可能是你的问题 . 尝试从viewWillAppear:
或viewDidAppear:
调用该方法广告2:这很可能是一个时区问题 . 尝试将日期存储为
NSDate
,而不是在NSDate
和NSString
之间来回转换 .广告3:
setDate:
需要NSDate
,它没有格式 . 把它想象成整数 .永远不要将
NSDate
存储为数据库中的NSString
始终尝试将其存储为时间戳,就像核心数据一样 .对于您下面给出的当前问题是应该帮助您的代码,我在
UIButton
上使用IBAction
,它将在UIDatePicker
控件中显示已转换的NSString
日期 .对于问题2,请验证您的时区,我不确定问题3现在我还没有看到
UIDatePicker
的任何特定日期格式它只接受NSDate
.对于3我建议检查
UIDatePicker
模式还尝试在XIB / storyboard属性检查器中将local设置为default .经过几周的尝试后,我发现问题是我在
viewDidLoad
分配和初始化我的UIDatePicker
因此,当我使用
[datePicker setDate: date];
时,它不起作用 . 我不知道为什么 . 但对我来说就是这样 . 我刚刚删除了self.datePicker = [[UIDatePicker alloc]init];
并且setDate方法有效 .如果有人可以解释为什么分配
UIDatePicker
使setDate
方法无效,我会很高兴 . 我认为我需要分配所有新对象才能使用它们,因为例如当我创建一个新的NSMutableArray
时,如果我不首先分配它,我就无法向它添加对象 . 谢谢大家的努力 .