如何在列表中使用 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() 函数?