如何从当前日期开始添加或减去1个月?

我需要能够从当前日期开始添加或减去1个月。

到目前为止,我有以下代码:

import SwiftUI

struct DateView: View {
    static let dateFormat: DateFormatter = {
        let formatter = DateFormatter()
        formatter.setLocalizedDateFormatFromTemplate("yyyy MMMM")
        return formatter
    }()

    var date = Date()

    var body: some View {

        HStack {

            Button(action: {
                print("Button Pushed")
            }) {
                Image(systemName: "chevron.left")
                .padding()
            }

            Spacer()

            Text("\(date,formatter: Self.dateFormat)")
            Spacer()

            Button(action: {
                print("Button Pushed")
            }) {
                Image(systemName: "chevron.right")
                .padding()
            }

        }
        .padding()
        .background(Color.yellow)
    }
}

struct DateView_Previews: PreviewProvider {
    static var previews: some View {
        DateView()
    }
}

我想将显示的日期更改为+1个月或-1个月,具体取决于我要轻按的V形箭头。

我是Swift和swiftui的新手,不知道应该使用什么动作。我认为它与DateComponents有关,但是现在该怎么办?我被困住了。请帮助我。

为了更好地可视化我的拥有和想要做的事情,以下是我当前结果的图像:

如何从当前日期开始添加或减去1个月?

zht_410728 回答:如何从当前日期开始添加或减去1个月?

您可以使用CalendarDate添加或减去月份/天/小时等。可以在here上找到有关Calendar的Apple文档。

下面是一个工作示例,展示了如何将月份增加/减少1。

struct ContentView: View {

    static let dateFormat: DateFormatter = {
        let formatter = DateFormatter()
        formatter.setLocalizedDateFormatFromTemplate("yyyy MMMM")
        return formatter
    }()

    @State var date = Date()

    var body: some View {

        HStack {

            Button(action: {
                print("Button Pushed")
                self.changeDateBy(-1)
            }) {
                Image(systemName: "chevron.left")
                    .padding()
            }

            Spacer()

            Text("\(date,formatter: Self.dateFormat)")
            Spacer()

            Button(action: {
                print("Button Pushed")
                self.changeDateBy(1)
            }) {
                Image(systemName: "chevron.right")
                    .padding()
            }

        }
        .padding()
        .background(Color.yellow)
    }

    func changeDateBy(_ months: Int) {
        if let date = Calendar.current.date(byAdding: .month,value: months,to: date) {
            self.date = date
        }
    }
}
本文链接:https://www.f2er.com/3159209.html

大家都在问