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?
Asked
Active
Viewed 341 times
1 Answers
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")
}
}
}

workingdog support Ukraine
- 26,280
- 4
- 27
- 37