微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果今天的日期在 SwiftUI 中的 2 个不同日期之间

如何解决如果今天的日期在 SwiftUI 中的 2 个不同日期之间

我想看看今天的日期是否在 2 个日期之间。如果今天的日期介于某些日期之间,则会更改变量的值。

例如:

var p = 5

if viewmodel.currentTime > "2021-04-23" && viewmodel.currentTime < "2021-05-23"
{
    p = 2
}

这就是我想要实现的目标,但使用的是 SwiftUI 语言,但我不知道该怎么做。

我正在考虑使用 if 语句,但这不起作用。我有一个获取今天日期的类。

    @Published var currentTime = ""
    
    var timer = Timer()
    
    init() {
        let repeatEveryXSeconds: TimeInterval = 1
        timer = Timer.scheduledTimer(withTimeInterval: repeatEveryXSeconds,repeats: true,block: { [weak self] timer in
            let formatter = DateFormatter()
            formatter.dateFormat = "YYYY-MM-dd"
            self?.currentTime = formatter.string(from: Date())
        })
    }
}
struct Dates: View {
    
@StateObject private var viewmodel = viewmodel()

我想要一些关于我应该如何完成这项任务的帮助或建议。

如果有任何混淆,请告诉我。这有点难以解释。

更新:

这是我得到的错误

Expected declaration

解决方法

DateComparable,因此您可以使用 来比较您的日期。关键是使用 Date 类型执行所有逻辑,然后格式化结果。您可以使用以下函数在 DateString 之间进行转换。

public extension Date {

    static func parse(_ string: String,format: String = "yyyy-MM-dd") -> Date {
        let dateFormatter = DateFormatter()
        dateFormatter.timeZone = NSTimeZone.default
        dateFormatter.dateFormat = format

        let date = dateFormatter.date(from: string)!
        return date
    }

    func dateString(_ format: String = "yyyy-MM-dd") -> String {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = format
        return dateFormatter.string(from: self)
    }
}
var p = 5
let now = Date()
let day1 = Date.parse("2021-04-23")
let day2 = Date.parse("2021-05-23")

if now > day1 && now < day2 {
    p = 2
}
print(p) // prints 2 as of May 1,2021

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。