从 DatePicker SwiftUI 更改选定的日期格式

Cla*_*diu 7 datepicker ios swiftui

有没有办法格式化日期?(从图片中箭头指示的位置)我知道它是根据语言环境格式化的,但有没有办法自己格式化它?

在此处输入图片说明

struct ContentView: View {

    @State private var selectedDate = Date()

    var body: some View {
        Form {

            DatePicker(selection: $selectedDate, in: ...Date(), displayedComponents: .date) {
                Text("From*")
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 4

我能想到实现此目的的唯一方法是创建自己的自定义 DatePicker 视图,并在 TextField 上使用 onAppear 来更新 @State selectedDateText: String 变量以在 TextField 中显示。这感觉就像一个黑客,我\xe2\x80\x99m 几乎不好意思发布它,但它有效。我\xe2\x80\x99m 是Swift 和iOS 编程的新手,所以我\xe2\x80\x99m 确信有人会提出更好的答案,所以我\xe2\x80\x99ll 提供这个\xe2\x80\ x99 的价值。我的自定义视图是这样的:

\n
struct CustomDatePicker: View {\n  @Binding var date: Date\n\n  @State private var showPicker: Bool = false\n  @State private var selectedDateText: String = "Date"\n\n  private var selectedDate: Binding<Date> {\n    Binding<Date>(get: { self.date}, set : {\n        self.date = $0\n        self.setDateString()\n    })\n  } // This private var I found\xe2\x80\xa6 somewhere. I wish I could remember where\n\n  // To take the selected date and store it as a string for the text field\n  private func setDateString() {\n    let formatter = DateFormatter()\n    formatter.dateFormat = "MMMM dd, yyyy"\n\n    self.selectedDateText = formatter.string(from: self.date)\n  }\n\n  var body: some View {\n    VStack {\n        HStack {\n            Text("Date:")\n                .frame(alignment: .leading)\n            \n            TextField("", text: $selectedDateText)\n                .onAppear() {\n                    self.setDateString()\n                }\n                .disabled(true)\n                .onTapGesture {\n                    self.showPicker.toggle()\n                }\n            .multilineTextAlignment(.trailing)\n        }            \n        \n        if showPicker {\n            DatePicker("", selection: selectedDate,\n            displayedComponents: .date)\n            .datePickerStyle(WheelDatePickerStyle())\n            .labelsHidden()\n        }\n    }\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

编辑:我找到了私有 var 代码的来源。来自这篇文章:How to detector a value change of a Datepicker using SwiftUI and Joint?

\n