时间和日期格式化程序 SwiftUI JSON 数据
Time and date formatter SwiftUI JSON data
希望这是一个简单的过程。我正在尝试使用 SwiftUI 在 iOS 应用程序中的列表中显示日期和时间。我目前遇到代码问题并收到此错误消息:Cannot convert value of type 'PostListViewModel' to expected argument type 'Data'
请查找以下代码:
struct PostViewModel {
var post: Post
init(post: Post) {
self.post = post
}
var startTime: Date {
let data = PostListViewModel()
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .formatted(DateFormatter.DateFormat)
let postDate = try! decoder.decode(startTime.self, from: data)
return self.post.startTime
}
}
extension DateFormatter {
static let DateFormat: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "MMM d"
formatter.calendar = Calendar(identifier: .iso8601)
formatter.timeZone = TimeZone(secondsFromGMT: 0)
formatter.locale = Locale(identifier: "en_US_POSIX")
return formatter
}()
}
你能看出代码有什么问题吗?
如果要将日期字符串转换为 Date
,然后再转换为另一个日期字符串,请使用具有两个不同日期格式字符串的日期格式化程序
struct PostViewModel {
var post: Post
init(post: Post) {
self.post = post
}
var startTime: String {
let formatter = DateFormatter()
formatter.timeZone = TimeZone(secondsFromGMT: 0)
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
if let date = formatter.date(from: post.startTime) {
formatter.dateFormat = "MMM d"
return formatter.string(from: date)
} else {
return post.startTime
}
}
}
希望这是一个简单的过程。我正在尝试使用 SwiftUI 在 iOS 应用程序中的列表中显示日期和时间。我目前遇到代码问题并收到此错误消息:Cannot convert value of type 'PostListViewModel' to expected argument type 'Data'
请查找以下代码:
struct PostViewModel {
var post: Post
init(post: Post) {
self.post = post
}
var startTime: Date {
let data = PostListViewModel()
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .formatted(DateFormatter.DateFormat)
let postDate = try! decoder.decode(startTime.self, from: data)
return self.post.startTime
}
}
extension DateFormatter {
static let DateFormat: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "MMM d"
formatter.calendar = Calendar(identifier: .iso8601)
formatter.timeZone = TimeZone(secondsFromGMT: 0)
formatter.locale = Locale(identifier: "en_US_POSIX")
return formatter
}()
}
你能看出代码有什么问题吗?
如果要将日期字符串转换为 Date
,然后再转换为另一个日期字符串,请使用具有两个不同日期格式字符串的日期格式化程序
struct PostViewModel {
var post: Post
init(post: Post) {
self.post = post
}
var startTime: String {
let formatter = DateFormatter()
formatter.timeZone = TimeZone(secondsFromGMT: 0)
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
if let date = formatter.date(from: post.startTime) {
formatter.dateFormat = "MMM d"
return formatter.string(from: date)
} else {
return post.startTime
}
}
}