我有开始日期时间和结束日期时间如何在iOS Swift 4中显示结束销售
我有开始日期和结束日期字符串,如何显示结束销售计时器一样的图像 “开始日期”:“2019年12月18日05:15:00+0000”,“结束日期”:“2019年12月27日11:15:39+0000”我有开始日期时间和结束日期时间如何在iOS Swift 4中显示结束销售,ios,timer,swift4,Ios,Timer,Swift4,我有开始日期和结束日期字符串,如何显示结束销售计时器一样的图像 “开始日期”:“2019年12月18日05:15:00+0000”,“结束日期”:“2019年12月27日11:15:39+0000” 请帮忙 您应该首先将日期字符串转换为日期,然后可以使用计时器根据开始日期和结束日期更新计时器标签 使用Calendar和dateComponents方法查找日期之间的日、时、分和秒差异,然后将日、时、分和秒标签上的值设置为与所附图像相同的值 实施示例: var timer:Timer? var en
请帮忙 您应该首先将日期字符串转换为日期,然后可以使用计时器根据开始日期和结束日期更新计时器标签 使用
Calendar
和dateComponents
方法查找日期之间的日、时、分和秒差异,然后将日、时、分和秒标签上的值设置为与所附图像相同的值
实施示例:
var timer:Timer?
var endDate:Date?
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
startTimer()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
stopTimer()
}
func startTimer(){
let endDateStr = "Dec 27, 2019 11:15:39 +0000"
let dateFormat = "MMM d, yyyy HH:mm:ss Z"
let dateFormater = DateFormatter()
dateFormater.dateFormat = dateFormat
endDate = dateFormater.date(from: endDateStr)
//stop timer if it's already running
stopTimer()
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateSaleTime), userInfo: nil, repeats: true)
}
func stopTimer(){
if timer != nil{
timer!.invalidate()
timer = nil
}
}
func updateSaleTime(){
guard let d2 = endDate else {
stopTimer()//Check if the date-format is correct for end date string.
return
}
let cal = Calendar.current
let components = cal.dateComponents([.day, .hour, .minute, .second], from: Date(), to: d2)
let day = components.day!
let hour = components.hour!
let minute = components.minute!
let second = components.second!
//set the value on day, hour, minute and second labels as like you attached image.
}
如果你计算开始日期和结束日期之间的差异,它总是相同的。相反,您可以计算endDate与当前日期的差值。 检查以下实现
class ViewController: UIViewController {
let endDate : Date? = {
// To create Date from date string received from server
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMM dd, yyyy HH:mm:ss Z"
// Convert to desired Timezone
return dateFormatter.date(from: "Dec 18, 2019 06:30:39 +0000")
}()
var timer : Timer?
private func starCountDown() {
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateTime), userInfo: nil, repeats: true)
}
private func stopCountDown() {
timer?.invalidate()
}
@objc func updateTime() {
guard let endDate = endDate else {
stopCountDown()
return
}
let countdown = Calendar.current.dateComponents([.day, .hour, .minute, .second], from: Date(), to: endDate)
let days = countdown.day!
let hours = countdown.hour!
let minutes = countdown.minute!
let seconds = countdown.second!
if days <= 0 && hours <= 0 && minutes <= 0 && seconds <= 0 {
stopCountDown()
print("Offer Expired")
return
}
print(String(format: "%02d Days , %02d Hours, %02d Mins, %02d Sec", days, hours, minutes, seconds))
// set values as per your requirement
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillAppear(animated)
stopCountDown()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
starCountDown()
}
}
类ViewController:UIViewController{
让我们结束日期:日期?={
//从服务器接收的日期字符串创建日期
让dateFormatter=dateFormatter()
dateFormatter.dateFormat=“mm dd,yyyy HH:mm:ss Z”
//转换为所需时区
返回日期格式化程序。日期(从:“2019年12月18日06:30:39+0000”)
}()
变量计时器:计时器?
私有函数开始倒计时(){
timer=timer.scheduledTimer(时间间隔:1,目标:self,选择器:#选择器(updateTime),userInfo:nil,repeats:true)
}
私有函数停止倒计时(){
计时器?.invalidate()
}
@objc func updateTime(){
guard let endDate=endDate else{
停止倒计时()
返回
}
让倒计时=Calendar.current.dateComponents([.day、.hour、.minute、.second],from:Date(),to:endDate)
让天=倒计时。天!
让小时=倒计时。小时!
让分钟=倒计时。分钟!
让秒=倒计时。秒!
如果您已附加示例图像的天数?您是否将日期作为字符串?您可以发布您迄今为止尝试的代码吗?您需要探索日历
和日期组件
classin以上开始日期、结束日期我从后端获取我需要显示与附加图像类似的计时器签出