見出し画像

ただ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:




この記事が気に入ったらサポートをしてみませんか?