【问题标题】:Swift NSCalendarUnit setValue forComponent not workingSwift NSCalendarUnit setValue forComponent 不起作用
【发布时间】:2015-03-03 02:41:29
【问题描述】:

我正在尝试创建一些日期对象。

var gregorian:NSCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!;

var unit : NSCalendarUnit = (NSCalendarUnit.YearCalendarUnit|NSCalendarUnit.MonthCalendarUnit|NSCalendarUnit.DayCalendarUnit|NSCalendarUnit.HourCalendarUnit|NSCalendarUnit.MinuteCalendarUnit);
var interval:Double = Double(i)*60*60*24;
var tomorrow:NSDate = NSDate().dateByAddingTimeInterval(interval);

var comps:NSDateComponents = gregorian.components(unit, fromDate: tomorrow);

comps.setValue(17, forComponent: NSCalendarUnit.HourCalendarUnit);
var five_tomorrow : NSDate = gregorian.dateFromComponents(comps)!;

comps.setValue(19, forComponent: NSCalendarUnit.HourCalendarUnit);
var seven_tomorrow : NSDate = gregorian.dateFromComponents(comps)!;

comps.setValue(21, forComponent: NSCalendarUnit.HourCalendarUnit);
var nine_tomorrow : NSDate = gregorian.dateFromComponents(comps)!;

这似乎在我的 iOS8 手机上运行良好。但在我的 iOS7 设备上,我打印日期并为所有日期获取 2015-03-03 19:33:00 MST。关于为什么会发生这种情况的任何猜测?

编辑: 我要做的是获取明天下午 5:00、7:00、9:00 和 10:00 左右的日期以设置本地通知。我不太在乎分钟。

【问题讨论】:

  • 我正在尝试设置 fireDate。晚上 7 点是我的目标,但我想早上 7 点也可以。
  • 如果它解决了您的问题,我不应该回答两次,只要点赞即可
  • NSCalendar.currentCalendar() 方法对我来说是一个错误。 [_NSCopyOnWriteCalendarWrapper dateWithEra:year:month:day:hour:minute:second:nanosecond:]:无法识别的选择器发送到实例 0x1782273c0

标签: swift ios7 ios8 nscalendar


【解决方案1】:

仅在 ios 8.0 及更高版本上使用。

@availability(iOS, introduced=8.0)
func setValue(value: Int, forComponent unit: NSCalendarUnit)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多