如何正确使用DateFormatter,是什么原因导致Swift出现此错误



我现在要从Date((转换时间->String((
$1我想指定DateFormatter((的属性
2如果可能的话,我很乐意知道错误的原因。

首先,请注意,我是一个新手程序员,我的问题不合适,因为我第一次问堆栈溢出问题,而且我的英语很差
我想我缺乏类和实例方法的知识,但我不知道
我在等英文或日文的答案。

这是一段代码。

//Xcode 12.3 Swift 5.3.2 MBAir AppleSilicon - 2020
import SwiftUI
struct ContentView: View {
let dateFormatter = DateFormatter()//OK!
//From here
dateFormatter.calendar = Calendar(identifier: .gregorian)
dateFormatter.timeZone = TimeZone(identifier: "Asia/Tokyo")//1
dateFormatter.locale = Locale(identifier: "ja_JP")
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm"
let dateString = dateFormatter.string(from: Date())//2
print(dateString)//3
...

//1上的错误
一行上的连续声明必须用";"分隔
函数声明的参数列表中应为"(">
函数宣言正文中应为'{'
实例方法声明中应为`func`关键字
应为声明
'dateFormatter(('的重新声明无效

//2上的错误
无法在属性初始值设定项中使用实例成员"dateFormatter";属性初始化程序在"self"可用之前运行

//3上的错误
在作用域中找不到类型"dateString">
实例方法声明中应为"func"关键字
未命名的参数必须用空名称"_"写入

苹果开发人员文档DateFormatter

这些错误是在创建object/self之前尝试使用dateFormatter时导致的。只需将代码放在一个函数中,如下所示,并从中返回一个字符串,然后在Text中使用它。示例:

struct ContentView{
var body: some View {
Text(calculateDate())
}
}
private func calculateDate() -> String {
let dateFormatter = DateFormatter()//OK!

//From here
dateFormatter.calendar = Calendar(identifier: .gregorian)
dateFormatter.timeZone = TimeZone(identifier: "Asia/Tokyo")//1
dateFormatter.locale = Locale(identifier: "ja_JP")
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm"
let dateString = dateFormatter.string(from: Date())//2
print(dateString)//3
return dateString
}

相关内容

最新更新