SWIFTUI: получить только дату - PullRequest
1 голос
/ 03 апреля 2020

Я пытаюсь что-то сделать и искать, но ничего не нашел. У меня есть функция DatePicker в файле. Я вызываю эту функцию и отправляю ей обязательную дату. Я хочу сохранить только дату и убрать из нее время. У меня есть эта функция:

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

Но я использую это так: Text ("(date, formatter: dateFormatter)")

Как я могу вернуть значение привязки с этим форматером?

спасибо

отредактировать мой файл:

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 ]

0 голосов
/ 04 апреля 2020

возможно, вы могли бы сделать что-то подобное, чтобы получить строковую дату без часов и минут.

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)
}

}

0 голосов
/ 04 апреля 2020

Полагаю, вы спрашиваете, как использовать форматтер. Используйте это так:

Text("date \(date, formatter: dateFormatter)")
...