-1

我有一个表格,用户应该选择一个日期,然后写一个总和。它工作正常,但是当我在列表中显示信息(表单核心数据)时,会显示整个日期字符串(时区、时间、年份等)。必须有一种简单的方法来显示月份和日期+日期吗?比如“1 月 28 日,星期四”

我的 ContentView 代码:

struct ContentView: View {
    @Environment(\.managedObjectContext) var moc
    @FetchRequest(entity: Kostnad.entity(), sortDescriptors: []) var kostnader:
    FetchedResults<Kostnad>
    
    @State private var showingAddScreen = false
    
 
    
    
    var body: some View {
        NavigationView{
           // Text("Count: \(kostnader.count)")
            List{
                ForEach(kostnader, id: \.self) { kostnad in
                    VStack{
                        Text("\(kostnad.sum)")
                        Text("\(kostnad.dato ?? Date())")
                    }
                }
                .onDelete(perform: deleteBooks)
               // Text("Month: \(components)")
            }
            .navigationBarTitle("Legg til")
            .navigationBarItems(leading: EditButton(), trailing:
                Button(action: {
                    self.showingAddScreen.toggle()
                }) {
                    Image(systemName: "plus")
                }
            )
            .sheet(isPresented: $showingAddScreen) {
                AddKostnad().environment(\.managedObjectContext, self.moc)
            }
        }
    }
    func deleteBooks(at offsets: IndexSet) {
        for offset in offsets {
            let kostnad = kostnader[offset]
            moc.delete(kostnad)
        }
        
        try? moc.save()
    }
}

现在的输出图像!

4

1 回答 1

1

使用 DateFormatter 扩展。

extension DateFormatter {
    static let displayDate: DateFormatter = {
         let formatter = DateFormatter()
         formatter.dateFormat = "EEEE, MMMM dd"
         return formatter
    }()
}

在视图内部

Text(DateFormatter.displayDate.string(from: kostnad.dato ?? Date()))
于 2021-01-29T12:10:23.883 回答