我正在制作一个 ios 应用程序,其中显示时隙我的时隙就像当前时间将是第一次,之后它将以 30 30 分钟的差异开始。
import UIKit
class ViewController2: UIViewController {
lazy var timeArray = [Any]()
let formatter = DateFormatter()
override func viewDidLoad() {
super.viewDidLoad()
timeSlots(startTime: "11:44 AM", endTime: "6:00 PM", leadTime: 60, timeInterval: 30)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func timeSlots(startTime:String , endTime:String , leadTime:Int, timeInterval:Int){
formatter.dateFormat = "hh:mm a"
var startingTime = formatter.date(from: startTime)
let endingTime = formatter.date(from: endTime)
var firstTimeSlot = Calendar.current.date(byAdding: .minute , value: leadTime, to: startingTime!)
timeArray.append(formatter.string(from: firstTimeSlot!).localizedUppercase)
formatter.dateFormat = "mm"
let newMin = formatter.string(from: firstTimeSlot!)
print(formatter.string(from: firstTimeSlot!))
formatter.dateFormat = "hh"
let newHour = formatter.string(from: firstTimeSlot!)
print(formatter.string(from: firstTimeSlot!))
var i = 0
if Int(newMin)! < 30 {
let myNewHour:Int = Int(newHour)!
let newTimeIS = "30" + String(myNewHour)
firstTimeSlot = formatter.date(from: newTimeIS)
}
else {
let myNewHour:Int = Int(newHour)!
let newTimeIS = "00" + String(myNewHour)
firstTimeSlot = formatter.date(from: newTimeIS)
}
formatter.dateFormat = "hh:mm a"
print(formatter.string(from: firstTimeSlot!))
while startingTime! <= endingTime! {
guard let firstTime = Calendar.current.date(byAdding: .minute , value: i*timeInterval, to: firstTimeSlot!) else {return}
print(formatter.string(from: firstTimeSlot!))
print(formatter.string(from: firstTime))
print(formatter.string(from: startingTime!))
startingTime = firstTime
timeArray.append(formatter.string(from: firstTime).localizedUppercase)
i += 1
if firstTime == endingTime! {
break
}
}
print(timeArray)
}
}
如果 m 设置第一次 11:44 或 11 AM 接下来应该是 12PM 但它需要 12AM 1AM 这样
希望这个答案能解决你的问题!如果确实如此,请投票:)
import UIKit
class ViewController: UIViewController {
var timeArray = [Any]()
let formatter = DateFormatter()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
timeSlots(startTime: "11:44 AM", endTime: "6:00 PM", timeInterval: 30)
}
func timeSlots(startTime:String , endTime:String , timeInterval:Int){
formatter.dateFormat = "hh:mm a"
let startingTime = formatter.date(from: startTime)
var endingTime = formatter.date(from: endTime)
if endingTime! <= startingTime! {
return
}
formatter.dateFormat = "mm"
var min = formatter.string(from: startingTime!)
formatter.dateFormat = "hh"
var hour = formatter.string(from: startingTime!)
if Int(min)! <= 30 {
min = "30"
} else {
min = "00"
hour = String(Int(hour)! + 1)
}
formatter.dateFormat = "HH:mm"
var tempStartTime = formatter.date(from: "\(hour):\(min)")
let endTimeString = formatter.string(from: endingTime!)
endingTime = formatter.date(from: endTimeString)
formatter.dateFormat = "hh:mm a"
timeArray.append(formatter.string(from: tempStartTime!).localizedUppercase)
while tempStartTime! < endingTime! {
guard let timeSlot = Calendar.current.date(byAdding: .minute , value: timeInterval, to: tempStartTime!) else {return}
//print("timeSlot: \(formatter.string(from: timeSlot))")
tempStartTime = timeSlot
timeArray.append(formatter.string(from: timeSlot).localizedUppercase)
}
print(timeArray)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句