我正在尝试做某事,并进行搜索,但是我什么也没发现。我在文件中有一个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()
}
}
}
}
}
我猜您在问如何使用格式化程序。像这样使用它:
Text("date \(date, formatter: dateFormatter)")
也许您可以执行类似的操作,以获得不带小时和分钟的字符串日期。
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
print("----> self.myDateString: \(self.myDateString)")
})
return Button(action: {
self.sheetDate.toggle()
}) {
VStack {
HStack {
Text("\(date, formatter: dateFormatter)")
Spacer()
if (sheetDate == true) {
Divider()
DatePicker("", selection: bindingDate, displayedComponents: .date).labelsHidden()
}
}
}
}
}
}