1
votes

I'm trying to do something, and search, but I found nothing. I have a function DatePicker in a file. I call this function and send to it a binding var date. I want to keep only date and remove time from it. I have this function :

     var dateFormatter: DateFormatter {
     let formatter = DateFormatter()
     formatter.dateStyle = .medium
     formatter.timeStyle = .none
     return formatter
 }

But I use it like this : Text("(date, formatter: dateFormatter)")

How I can return the binding value with this formatter ?

thank you

edit my file :

struct WIDatePicker: View {

@Binding var date: Date

@State private var sheetDate = false

 var dateFormatter: DateFormatter {
     let formatter = DateFormatter()
     formatter.dateStyle = .medium
     formatter.timeStyle = .none
     return formatter
 }



var body: some View {

    Button(action: {self.sheetDate.toggle()}) {

        VStack {

                HStack {

                    Text("\(date, formatter: dateFormatter)")
                    Print("Variables : \(dateFormatter.string(from: date))")

                    Spacer()


            if (sheetDate == true) {

                Divider()
                DatePicker("", selection: $date, displayedComponents: .date)
                    .labelsHidden()

            }
        }
    }
}

}

2

2 Answers

0
votes

I guess you are asking how to use the formatter. Use it like this:

Text("date \(date, formatter: dateFormatter)")
0
votes

maybe you could do something like this, to get the string date without hours and minutes.

struct WIDatePicker: View {

@State var date: Date
@State private var sheetDate = false
@State var myDateString = ""

var dateFormatter: DateFormatter {
    let formatter = DateFormatter()
    formatter.dateStyle = .medium
    formatter.timeStyle = .none
    return formatter
}

var body: some View {
    let bindingDate = Binding<Date>(
        get: { self.date },
        set: {
            self.myDateString =  self.dateFormatter.string(from: $0)
            self.date = $0
    })

    return Button(action: {
        self.sheetDate.toggle()
    }) {
        VStack {
            HStack {
                Text("\(self.myDateString)")
                Spacer()
                if (sheetDate == true) {
                    Divider()
                    DatePicker("", selection: bindingDate, displayedComponents: .date).labelsHidden()
                }
            }
        }
    }.onAppear(perform: loadData)
}

func loadData() {
    myDateString = dateFormatter.string(from: date)
}

}