使用日历获取准确的天数 Swift?
Using Calendar to get exact amount of days Swift?
我是 swift 的新手,我正在尝试使用 Swift 中的内置日历来找到合适的天数并将其解析为我的日期变量,我该怎么做去做? Atm 我的时间跨度只是硬编码,但从长远来看并不可靠。我需要返回示例 1 个月。
switch data {
case .failure(_):
print("No access to quote data")
break
case .success(let data):
let startDate = Date()
cropClient.delegate = auth
var timeSpan: Int
var date = Calendar.current.date(byAdding: .day, value: timeSpan, to: startDate)
switch configuration.timeSpan {
case .unknown:
return
case .week:
timeSpan = -7
case .1month:
timeSpan = -30
case .3months:
timeSpan = -90
case .year:
timeSpan = -365
}
}
解决方案是您的switch
语句需要确定两个变量——日历单位和数量,而不仅仅是数量。这样,无论一个月或一年中有多少天,您都将获得正确的日期。
let startDate = Date()
let timeSpan: Int
let calendarUnit: Calendar.Component
switch configuration.timeSpan {
case .unknown:
return
case .week:
timeSpan = -7
calendarUnit = .day
case .oneMonth:
timeSpan = -1
calendarUnit = .month
case .threeMonths:
timeSpan = -3
calendarUnit = .month
case .year:
timeSpan = -1
calendarUnit = .year
}
let date = Calendar.current.date(byAdding: calendarUnit, value: timeSpan, to: startDate)
我是 swift 的新手,我正在尝试使用 Swift 中的内置日历来找到合适的天数并将其解析为我的日期变量,我该怎么做去做? Atm 我的时间跨度只是硬编码,但从长远来看并不可靠。我需要返回示例 1 个月。
switch data {
case .failure(_):
print("No access to quote data")
break
case .success(let data):
let startDate = Date()
cropClient.delegate = auth
var timeSpan: Int
var date = Calendar.current.date(byAdding: .day, value: timeSpan, to: startDate)
switch configuration.timeSpan {
case .unknown:
return
case .week:
timeSpan = -7
case .1month:
timeSpan = -30
case .3months:
timeSpan = -90
case .year:
timeSpan = -365
}
}
解决方案是您的switch
语句需要确定两个变量——日历单位和数量,而不仅仅是数量。这样,无论一个月或一年中有多少天,您都将获得正确的日期。
let startDate = Date()
let timeSpan: Int
let calendarUnit: Calendar.Component
switch configuration.timeSpan {
case .unknown:
return
case .week:
timeSpan = -7
calendarUnit = .day
case .oneMonth:
timeSpan = -1
calendarUnit = .month
case .threeMonths:
timeSpan = -3
calendarUnit = .month
case .year:
timeSpan = -1
calendarUnit = .year
}
let date = Calendar.current.date(byAdding: calendarUnit, value: timeSpan, to: startDate)