我是Swift的新手,正在尝试调度程序.我选择了开始时间,我需要在开始时间加5分钟(或它的倍数)并将其显示在UILabel中?
@IBAction func timePickerClicked(sender: UIDatePicker) {
var dateFormatter = NSDateFormatter()
dateFormatter.timeStyle = NSDateFormatterStyle.ShortStyle
var dateStr = dateFormatter.stringFromDate(startTime.date)
let sttime = dateStr
startTimeDisplay.text = dateStr
}
// How to advance time by 5 minutes for each section based on the start time selected and display time
// section 1 = start time + 5
// section 2 = start time + 10*
Run Code Online (Sandbox Code Playgroud)
Rob*_*Rob 241
两种方法:
使用日历:
在Swift 3及更高版本中:
let calendar = Calendar.current
let date = calendar.date(byAdding: .minute, value: 5, to: startDate)
Run Code Online (Sandbox Code Playgroud)
或者,在Swift 2中:
let calendar = NSCalendar.currentCalendar()
let date = calendar.dateByAddingUnit(.Minute, value: 5, toDate: startDate, options: [])
Run Code Online (Sandbox Code Playgroud)只需使用dateByAddingTimeInterval
添加一定的秒数.
例如,
Swift 3或更高版本:
let date = startDate.addingTimeInterval(5.0 * 60.0)
Run Code Online (Sandbox Code Playgroud)
斯威夫特2:
let date = startDate.dateByAddingTimeInterval(5.0 * 60.0)
Run Code Online (Sandbox Code Playgroud)底线addingTimeInterval
是最简单的,但如果你想增加几天,几个月等,你想要使用日历计算,因为那些调整为夏令时,而dateByAddingTimeInterval
不是.
Leo*_*bus 37
您可以使用Calendar的方法
func date(byAdding component: Calendar.Component, value: Int, to date: Date, wrappingComponents: Bool = default) -> Date?
Run Code Online (Sandbox Code Playgroud)
添加任何Calendar.Component
任何Date
.您可以创建日期扩展名以将x分钟添加到您UIDatePicker
的日期:
Xcode 8和Xcode 9•Swift 3.0和Swift 4.0
extension Date {
func adding(minutes: Int) -> Date {
return Calendar.current.date(byAdding: .minute, value: minutes, to: self)!
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用扩展方法向发件人添加分钟(UIDatePicker):
let section1 = sender.date.adding(minutes: 5)
let section2 = sender.date.adding(minutes: 10)
Run Code Online (Sandbox Code Playgroud)
游乐场测试:
Date().adding(minutes: 10) // "Jun 14, 2016, 5:31 PM"
Run Code Online (Sandbox Code Playgroud)
Gil*_*man 15
斯威夫特4:
//添加5分钟到目前为止
let date = startDate.addingTimeInterval(TimeInterval(5.0 * 60.0))
Run Code Online (Sandbox Code Playgroud)
//从日期开始减去5分钟
let date = startDate.addingTimeInterval(TimeInterval(-5.0 * 60.0))
Run Code Online (Sandbox Code Playgroud)
小智 10
extension Date {
func withAddedMinutes(minutes: Double) -> Date {
addingTimeInterval(minutes * 60)
}
func withAddedHours(hours: Double) -> Date {
withAddedMinutes(minutes: hours * 60)
}
}
Run Code Online (Sandbox Code Playgroud)
用例
let anHourFromNow = Date().withAddedHours(hours: 1)
let aMinuteFromNow = Date().withAddedMinutes(minutes: 1)
Run Code Online (Sandbox Code Playgroud)
您可以在 swift 4 或 5 中使用
let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd H:mm:ss"
let current_date_time = dateFormatter.string(from: date)
print("before add time-->",current_date_time)
//adding 5 miniuts
let addminutes = date.addingTimeInterval(5*60)
dateFormatter.dateFormat = "yyyy-MM-dd H:mm:ss"
let after_add_time = dateFormatter.string(from: addminutes)
print("after add time-->",after_add_time)
Run Code Online (Sandbox Code Playgroud)
输出:
before add time--> 2020-02-18 10:38:15
after add time--> 2020-02-18 10:43:15
Run Code Online (Sandbox Code Playgroud)
保存这个小扩展:
extension Int {
var seconds: Int {
return self
}
var minutes: Int {
return self.seconds * 60
}
var hours: Int {
return self.minutes * 60
}
var days: Int {
return self.hours * 24
}
var weeks: Int {
return self.days * 7
}
var months: Int {
return self.weeks * 4
}
var years: Int {
return self.months * 12
}
}
Run Code Online (Sandbox Code Playgroud)
然后直观地使用它:
let threeDaysLater = TimeInterval(3.days)
date.addingTimeInterval(threeDaysLater)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
80242 次 |
最近记录: |