ただString型の日付をData型に換えたいだけなのだが。。。【SwiftUI】
そんなに難しいとは思えなかった表題の件、結構大変で未だに解決してない。
←【一応、解決。というかエラーが出てこないコードを探し出しただけ。。。】
エラーばかり出てくる。
エラーの内容も意味不明。Xcodeのバグじゃないのか?
こちらは、検索結果をコピペして使ってるだけなのに。。。
func StringToDate(dateValue: String, format: String) -> Date {
let dateFormatter = DateFormatter()
dateFormatter.calendar = Calendar(identifier: .gregorian)
dateFormatter.dateFormat = format
return dateFormatter.date(from: dateValue) ?? Date()
}
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let dateStr = "2022-03-22"
let dateString = dateFormatter.string(from: StringToDate(dateValue: dateStr, format: "yyyy-MM-dd HH:mm:ss"))
print(dateString)
こんな感じだが。これもエラーだった。エラーの内容が、多すぎて今回はアウトプットはパス。
結局、色々試した結果、下記のようにClassで宣言してみたら、一応日付は表示された。多分、FuncやClass内でのコードが大丈夫だとしても、VIew内でTextで表示させる方法を理解していないとうまくいかないのだろう。まだStringDateからDateへの変換なども理解が浅い。今は、取り上げず、コピペで対応。
import UIKit
class DateUtils {
class func dateFromString(string: String, format: String) -> Date {
let formatter: DateFormatter = DateFormatter()
formatter.calendar = Calendar(identifier: .gregorian)
formatter.dateFormat = format
return formatter.date(from: string)!
}
class func stringFromDate(date: Date, format: String) -> String {
let formatter: DateFormatter = DateFormatter()
formatter.calendar = Calendar(identifier: .gregorian)
formatter.dateFormat = format
return formatter.string(from: date)
}
}
View内のコードはこれ。でも、データを表示するたびにこんなに長文で作らないとならないなんて、大変だし、見た目が良くないな。別ファイルに作って整頓したいけど、今回はお開きに。
Weekdayが最初に来る米国スタイルだけど、これで手を打った。"Tue, Jan 2, 2024"のように表示される。
なんかDate型は、奥が深そう。っていうか難しすぎ。もっとシンプルにできないものだろうか。
let date = DateUtils.dateFromString(string: savedstart, format: "yyyy-MM-dd")
Text(date.formatted(Date.FormatStyle().year().month().day().weekday(.abbreviated)))
Reference:
この記事が気に入ったらサポートをしてみませんか?