如何在字符串中设置NSDateComponents中的小时/分钟/秒?

时间:2014-08-08 07:14:23

标签: ios nsdatecomponents nsdatepicker

我对 NSDateComponents 有一个小问题。

我现在的样子如下:[2014-8-08 08:00:00]因为我最初使用当前时间(使用[NSDate date]),然后设置小时,分钟和秒通过 comps 手动输入其他内容。

我的目标是使用字符串将日期与时间分开。我仍然希望能够使用当前时间,但是当涉及[comps set Hour / Minute / Second]时,我想用字符串设置它们。

字符串的格式如下:(06:00:00)。

打开NSDatePicker时,我需要将其设置为默认选项。因此,在选择日期时,它应该看起来像[2014-8-08 06:00:00]。

有什么办法可以通过字符串设置小时/分钟/秒吗?

我必须使用字符串。 06:00:00类似于商店打开门时的MYSQL查询。我正在与数百家商店合作。每家商店都有不同的营业时间。 感谢

佛朗哥

startTimeDatePicker.datePickerMode = UIDatePickerModeDateAndTime;
NSDate *now = [NSDate date];
startTimeDatePicker.maximumDate = now;


NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [calendar components: NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:[NSDate date]];
[comps setHour:8];
[comps setMinute:0];
[comps setSecond:0];

NSDate *dateFromComps = [calendar dateFromComponents:comps]; 

1 个答案:

答案 0 :(得分:2)

这是正确的答案。您必须单独分隔字符串,并将它们输入到组件中。

NSArray *results = [storeOpen componentsSeparatedByString:@":"];
if ([results count] == 3) {
    NSLog(@"1 - %d", [[results objectAtIndex:0] intValue]);
    NSLog(@"2 - %d", [[results objectAtIndex:1] intValue]);
    NSLog(@"3 - %d", [[results objectAtIndex:2] intValue]);


NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [calendar components: NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:[NSDate date]];
[comps setHour:[[results objectAtIndex:0] intValue]];
[comps setMinute:[[results objectAtIndex:1] intValue]];
[comps setSecond:[[results objectAtIndex:2] intValue]];


NSDate *dateFromComps = [calendar dateFromComponents:comps];