1

I used a DatePicker inside a Form, and It looks like the following image , Now,I hope it display "2020-4-19 " instead of "4/19/20 ". Someone knows how to do it?

enter image description here

AEM
  • 1,354
  • 8
  • 20
  • 30
lezi
  • 27
  • 4
  • Please copy and paste the code here rather than having a picture of the code. – sfung3 Apr 19 '20 at 02:45
  • Check out this post: https://stackoverflow.com/questions/59051670/change-selected-date-format-from-datepicker-swiftui – sfung3 Apr 19 '20 at 02:50

1 Answers1

1

I could not find a way with the default DatePicker, so I've taken the code from Change selected date format from DatePicker SwiftUI

made some changes to make it work. This CustomDatePicker should do you what you asked for even within a Form.

struct CustomDatePicker: View {
@State var text: String = "Date"
@Binding var date: Date
@State var formatString: String = "yyyy-MM-dd"

@State private var disble: Bool = false
@State private var showPicker: Bool = false
@State private var selectedDateText: String = "Date"

let formatter = DateFormatter()

private func setDateString() {
    formatter.dateFormat = formatString
    self.selectedDateText = formatter.string(from: self.date)
}

var body: some View {
    VStack {
        HStack {
            Text(text).frame(alignment: .leading)
            Spacer()
            Text(self.selectedDateText)
                .onAppear() {
                    self.setDateString()
            }
            .foregroundColor(.blue)
            .onTapGesture {
                self.showPicker.toggle()
            }.multilineTextAlignment(.trailing)
        }

        if showPicker {
            DatePicker("", selection: Binding<Date>(
                get: { self.date},
                set : {
                    self.date = $0
                    self.setDateString()
            }), displayedComponents: .date)
                .datePickerStyle(WheelDatePickerStyle())
                .labelsHidden()
        }
    }
}
}

struct ContentView: View {

@State var date = Date()

var body: some View {
    Form {
        Section {
            CustomDatePicker(text: "my date", date: $date, formatString: "yyyy-MM-dd")
        Text("test")
    }
}
}