从字符串设置 uidatepicker 日期
set uidatepicker date from string
问题已更新:
我有一个应用程序,用户可以在其中添加一个新的研讨会,包括他从 UIDatePicker
中选择的研讨会日期。之后,用户可以编辑研讨会的信息,包括更改日期。我想做的是以下内容:
1.读取用户添加新车间时从UIDatePicker
中选择的时间。
2.将日期转换成字符串保存在数据库中。
3. 当用户想要编辑研讨会时,我应该从数据库中检索研讨会的日期并将其从字符串转换为 NSDate
。
4.将Edit界面中的UIDatePicker
设置为我刚刚创建的NSDate
我认为这听起来合乎逻辑。但是,它对我不起作用,我不确定为什么。这是代码:
在AddWorkshop.m
class
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateStyle:NSDateFormatterMediumStyle];
//WSDate is a NSString variable
self.WSDate = [dateFormat stringFromDate:[sender date]];
在 EditWorkshop.m
class
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:viewDidLoad
从您要更新的位置 UIDatePicker
仅在加载视图时调用一次。所以这可能是你的问题。尝试从 viewWillAppear:
或 viewDidAppear:
调用方法
广告 2:这很可能是时区问题。尝试将日期存储为 NSDate
而不是在 NSDate
和 NSString
之间来回转换。
广告 3:setDate:
需要一个没有格式的 NSDate
。把它想象成一个整数。
切勿将 NSDate
存储为 NSString
在您的数据库中始终尝试将其存储为时间戳,就像核心数据一样。
对于您当前的问题,下面给出的代码应该可以帮助您解决问题,我在 UIButton
上使用 IBAction
,它将在 [=] 中显示转换后的 NSString
日期16=]控制。
- (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
时,如果我不先分配它,我就不能向它添加对象。
谢谢大家的努力。
问题已更新:
我有一个应用程序,用户可以在其中添加一个新的研讨会,包括他从 UIDatePicker
中选择的研讨会日期。之后,用户可以编辑研讨会的信息,包括更改日期。我想做的是以下内容:
1.读取用户添加新车间时从UIDatePicker
中选择的时间。
2.将日期转换成字符串保存在数据库中。
3. 当用户想要编辑研讨会时,我应该从数据库中检索研讨会的日期并将其从字符串转换为 NSDate
。
4.将Edit界面中的UIDatePicker
设置为我刚刚创建的NSDate
我认为这听起来合乎逻辑。但是,它对我不起作用,我不确定为什么。这是代码:
在AddWorkshop.m
class
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateStyle:NSDateFormatterMediumStyle];
//WSDate is a NSString variable
self.WSDate = [dateFormat stringFromDate:[sender date]];
在 EditWorkshop.m
class
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:viewDidLoad
从您要更新的位置 UIDatePicker
仅在加载视图时调用一次。所以这可能是你的问题。尝试从 viewWillAppear:
或 viewDidAppear:
广告 2:这很可能是时区问题。尝试将日期存储为 NSDate
而不是在 NSDate
和 NSString
之间来回转换。
广告 3:setDate:
需要一个没有格式的 NSDate
。把它想象成一个整数。
切勿将 NSDate
存储为 NSString
在您的数据库中始终尝试将其存储为时间戳,就像核心数据一样。
对于您当前的问题,下面给出的代码应该可以帮助您解决问题,我在 UIButton
上使用 IBAction
,它将在 [=] 中显示转换后的 NSString
日期16=]控制。
- (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
时,如果我不先分配它,我就不能向它添加对象。
谢谢大家的努力。