【问题标题】:How to set hour/minute/second in NSDateComponents with a string?如何使用字符串在 NSDateComponents 中设置小时/分钟/秒?
【发布时间】:2014-10-01 14:27:37
【问题描述】:

我在使用 NSDateComponents 时遇到了一个小问题。

我现在的内容如下所示:[2014-8-08 08:00:00] 因为我最初使用的是当前时间(使用 [NSDate 日期]),然后设置小时、分钟和秒通过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]; 

【问题讨论】:

  • 你为什么使用字符串?这是错误的数据类型。
  • 抱歉转贴。 @Droppy 我必须使用字符串。 Yogesh,你的回答对我不起作用。我必须使用字符串的原因是因为 06:00:00 直接来自 MYSQL 查询。它类似于商店开门时的样子。我正在为数百家商店这样做,所以他们都在不同的时间开门。
  • 所以问题是关于将带有“06:00:00”的字符串解析为小时/分钟/秒的整数。没有别的了。
  • 是的,我需要 NSDatePicker 默认情况下,将小时/分钟/秒设置为查询 (06:00:00)。还有另一个带有结束时间的 NSDatePicker(商店关门)。因此,当客户选择日期时,第一个日期选择器应默认为(商店打开),第二个日期选择器应默认为(商店关闭)

标签: ios nsdatecomponents nsdatepicker


【解决方案1】:

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

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];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多