SWIFT 5比较日期来知道是白天还是晚上



我创建了一个函数,让您知道当前时间是白天还是晚上。问题是,即使在日落之后,应用程序也会告诉我现在还是白天。所以我认为IF条件是不正确的。你能帮我找到解决办法吗?该应用程序使用用户准确的日落和日出时间。你必须把它们与现在的时间进行比较。谢谢你

func actualTime(sunrise: Date, sunset: Date) {
let date = Date()
if (date < sunrise && date > sunset) {
let nightTime = GrowingNotificationBanner(
title: "Fuel Reserve AI: NIGHT-TIME".localised(),
subtitle: "PlaneCalc applies nighttime fuel regulations".localised(),
style: .warning

)
hapticWarning()
nightTime.show()
}
else {
let dayTime = GrowingNotificationBanner(
title: "Fuel Reserve AI: DAY-TIME".localised(),
subtitle: "PlaneCalc applies daytime fuel regulations".localised(),
style: .success
)
dayTime.show()
}
}

您的if条件因为午夜而失败,例如,在午夜之前,日落之后的时间不是在日出之前。所以你需要在比较中包含午夜

检查现在是否在午夜到日出之间或日落之后以识别夜间,否则是白天

func actualTime(sunrise: Date, sunset: Date) {
let date = Date()
let previousMidnight = Calendar.current.startOfDay(for: date)
if date >= previousMidnight && date < sunrise ||
date > sunset {
print("It's night")
}
else {
print("It's day")
}
}

最新更新