【问题标题】:Swift add 1 week to current dateSwift 将 1 周添加到当前日期
【发布时间】:2016-09-07 04:16:28
【问题描述】:

我正在使用datePicker 并尝试将最小日期确定为当前日期,最大日期为从今天开始的一周。我似乎无法发挥最大作用。这是我的代码:

calendarView.minimumDate = todaysDate
calendarView.maximumDate = [todaysDate .dateByAddingTimeInterval(60*60*24*10)]

【问题讨论】:

标签: swift datepicker


【解决方案1】:

你可以这样做:

let today = NSDate()
let cal = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)
let nextWeek = cal!.dateByAddingUnit(NSCalendar.Unit.Day, value: 7, toDate: today, options: NSCalendar.Options.MatchLast)

这将打印出2016-09-14 04:21:14

斯威夫特 5.x

let calendar = Calendar.current
let addOneWeekToCurrentDate = calendar.date(byAdding: .weekOfYear, value: 1, to: Date())

【讨论】:

  • 永远不要使用第一个选项。在某些情况下会出错。
  • 我在寻找“.week”属性,但我想这也可以!
  • 我担心是否使用不同的日历,但显然几乎所有日历每周都有 7 天:atlasobscura.com/articles/why-cant-we-get-rid-of-the-7day-week
  • @DanielSpringer,回复较晚,但请使用您要求的 .week 属性检查更新
【解决方案2】:

即使在年底,此代码也能正常工作。

Calendar.current.date(byAdding: .weekOfYear, value: 1, to: date)

【讨论】:

  • 在这种情况下使用.weekOfMonth 代替.weekOfYear 有什么区别吗?我尝试了不同的日历、语言环境和时区,但它似乎工作正常
【解决方案3】:
    extension Date {
    func addWeek(noOfWeeks: Int) -> Date {
    return Calendar.current.date(byAdding: .weekOfYear, value: noOfWeeks, to: self)!
    }
   }
    //USAGE    
    let newDate = Date().addWeek(noOfWeeks: 3)

【讨论】:

    猜你喜欢
    • 2012-04-16
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    相关资源
    最近更新 更多