如何在列表中使用 date 和 dateFormatter?

Posted

技术标签:

【中文标题】如何在列表中使用 date 和 dateFormatter?【英文标题】:How to use date and dateFormatter in a list? 【发布时间】:2020-07-11 22:47:58 【问题描述】:

我正在尝试制作一个简单的应用程序,当按下“添加”按钮时,它会在列表中添加一个新单元格,其中包含标题和创建日期。我使用 mvvm 创建了这个练习应用程序,但我不知道如何正确使用 date 和 dateFormatter。以下代码是我所拥有的:

型号:

struct Model: Identifiable 
    var id = UUID()
    var title: String
    var createdAt = Date()
    

视图模型:

class ViewModel: ObservableObject 
    @Published var items = [Model]()

还有观点:

struct ContentView: View 
    static var DateFormatter: DateFormatter 
        let formatter = self.DateFormatter
        formatter.dateStyle = .long
        return formatter
    
    
    @EnvironmentObject var viewModel: ViewModel
    
    var body: some View 
        NavigationView 
            List 
                ForEach(0 ..< viewModel.items.count, id: \.self)  index in
                    VStack 
                        Text(self.viewModel.items[index].title)
                        Text(self.viewModel.items[index].createdAt)
                    
                
            
            .navigationBarTitle("Practice")
            .navigationBarItems(trailing: Button(action: makeNew) 
                Text("Add")
            )
        
    
    
    func makeNew() 
        withAnimation 
            viewModel.items.append(Model(title: "New Item \(viewModel.items.count + 1)", createdAt: Date()))
        
    

【问题讨论】:

【参考方案1】:

首先,Swift 命名约定以小写字母开头。

其次,您需要修复日期格式化程序声明:

static let dateFormatter: DateFormatter =  
    let formatter = DateFormatter()
    formatter.dateStyle = .long
    return formatter
()

然后调用 ContentView 静态属性ContentView.dateFormatter.string(from: yourdate)。在你的情况下:

Text(ContentView.dateFormatter.string(from: self.viewModel.items[index].createdAt))

【讨论】:

以上是关于如何在列表中使用 date 和 dateFormatter?的主要内容,如果未能解决你的问题,请参考以下文章

在 Jaspersoft Studio 中,如何使用 DATEFORMAT() 函数?

如何禁用单击列表视图中的特定项目

JAVA格式化时间日期方法介绍

Mailchimp API 合并字段 - 日期格式

如何在 R 中编写一个 for 循环来设置列表中数据集的周期以及开始和结束日期

如何返回两个列表之间的差异?