倒计时在 swift 中返回错误的天数
Countdown returning wrong amount of days in swift
我正在尝试实现 swift 中特定日期的倒计时,获取天数、小时数、分钟数和秒数,但出于某种原因,我的实现返回了错误的事件天数,但是正在返回正确的小时、分钟和秒。我不确定这里出了什么问题:
let date = Date()
let calendar = Calendar.current
let components = calendar.dateComponents([.second, .minute, .hour, .day], from: date as Date)
let currentDate = calendar.date(from: components)
let userCalendar = Calendar.current
let openingNight = NSDateComponents()
openingNight.year = 2020
openingNight.month = 9
openingNight.day = 10
openingNight.hour = 20
openingNight.minute = 30
openingNight.second = 0
let opener = userCalendar.date(from: openingNight as DateComponents)
let difference = calendar.dateComponents([.second, .minute, .hour, .day], from: currentDate!, to: opener!)
let daysLeft = difference.day
let hoursLeft = difference.hour
let minutesLeft = difference.minute
let secondsLeft = difference.second
daysLabel.text = "\(daysLeft!)"
hourLabel.text = "\(hoursLeft!)"
minuteLabel.text = "\(minutesLeft!)"
secondLabel.text = "\(secondsLeft!)"
返回 737661 天 4 小时 2 分 28 秒
currentDate
的数据组件中缺少月份和年份。这将给出正确的差异(这里仍然是 5 月 19 日,所以到 9 月 10 日还有 114 天)。
let date = Date()
let calendar = Calendar.current
let components = calendar.dateComponents([.second, .minute, .hour, .day, .month, .year], from: date as Date)
let currentDate = calendar.date(from: components)
let userCalendar = Calendar.current
let openingNight = NSDateComponents()
openingNight.year = 2020
openingNight.month = 9
openingNight.day = 10
openingNight.hour = 20
openingNight.minute = 30
openingNight.second = 0
let opener = userCalendar.date(from: openingNight as DateComponents)
let difference = calendar.dateComponents([.second, .minute, .hour, .day], from: currentDate!, to: opener!)
let daysLeft = difference.day
let hoursLeft = difference.hour
let minutesLeft = difference.minute
let secondsLeft = difference.second
print(difference) // day: 114 hour: 2 minute: 34 second: 6 isLeapMonth: false
我正在尝试实现 swift 中特定日期的倒计时,获取天数、小时数、分钟数和秒数,但出于某种原因,我的实现返回了错误的事件天数,但是正在返回正确的小时、分钟和秒。我不确定这里出了什么问题:
let date = Date()
let calendar = Calendar.current
let components = calendar.dateComponents([.second, .minute, .hour, .day], from: date as Date)
let currentDate = calendar.date(from: components)
let userCalendar = Calendar.current
let openingNight = NSDateComponents()
openingNight.year = 2020
openingNight.month = 9
openingNight.day = 10
openingNight.hour = 20
openingNight.minute = 30
openingNight.second = 0
let opener = userCalendar.date(from: openingNight as DateComponents)
let difference = calendar.dateComponents([.second, .minute, .hour, .day], from: currentDate!, to: opener!)
let daysLeft = difference.day
let hoursLeft = difference.hour
let minutesLeft = difference.minute
let secondsLeft = difference.second
daysLabel.text = "\(daysLeft!)"
hourLabel.text = "\(hoursLeft!)"
minuteLabel.text = "\(minutesLeft!)"
secondLabel.text = "\(secondsLeft!)"
返回 737661 天 4 小时 2 分 28 秒
currentDate
的数据组件中缺少月份和年份。这将给出正确的差异(这里仍然是 5 月 19 日,所以到 9 月 10 日还有 114 天)。
let date = Date()
let calendar = Calendar.current
let components = calendar.dateComponents([.second, .minute, .hour, .day, .month, .year], from: date as Date)
let currentDate = calendar.date(from: components)
let userCalendar = Calendar.current
let openingNight = NSDateComponents()
openingNight.year = 2020
openingNight.month = 9
openingNight.day = 10
openingNight.hour = 20
openingNight.minute = 30
openingNight.second = 0
let opener = userCalendar.date(from: openingNight as DateComponents)
let difference = calendar.dateComponents([.second, .minute, .hour, .day], from: currentDate!, to: opener!)
let daysLeft = difference.day
let hoursLeft = difference.hour
let minutesLeft = difference.minute
let secondsLeft = difference.second
print(difference) // day: 114 hour: 2 minute: 34 second: 6 isLeapMonth: false