4年前の質問(Swift2)の質問を参考にStringからの曜日取得をしようと思ったのですが、あまりにもバージョンが古い為対応しておらずこちらでお聞きします。
Stringからの曜日取得について
var str = "20160808" //ここから何とかして"(月)"という文字列を取得したい。
var youbi = "" //ここに曜日を格納したい。
以下が解決法のようなのですが、エラーが続発してしまい参ってしまっています...。
Swift5での解決法またはアドバイスなどお待ちしてます。
具体的なコード内容(1)
Swift2
1var str = "20160808" 2var insertIdx = str.startIndex.advancedBy(4) 3str.insert("-", atIndex: insertIdx) 4insertIdx = str.startIndex.advancedBy(7) 5str.insert("-", atIndex: insertIdx) 6print(str) //"2016-08-08" 7 8var cal = NSCalendar.currentCalendar() 9let weeks = ["日","月","火","水","木","金","土"] 10 11var dateFormatter = NSDateFormatter() 12dateFormatter.locale = NSLocale(localeIdentifier: "ja") 13dateFormatter.dateFormat = "yyyy/MM/dd" 14var date = (dateFormatter.dateFromString(str)) 15 16let comp = cal.components(NSCalendarUnit.Weekday, fromDate: date!) 17let weekIdx = comp.weekday 18var youbi: String = weeks[weekIdx - 1] 19print(youbi) //"月"
具体的なコード内容(2)
Swift2
1let str = "20160808" 2 3//指定した日付のNSDateを求める(西暦なので"en_US_POSIX"を使う) 4let df = NSDateFormatter() 5df.locale = NSLocale(localeIdentifier: "en_US_POSIX") 6df.dateFormat = "yyyyMMdd" 7let date = df.dateFromString(str) 8//print(date) 9 10//上で求めたNSDateの曜日番号を取得する(1~7が返ってくるので、-1して0~6にする) 11let comps = NSCalendar.currentCalendar().components(.Weekday, fromDate: date!) 12let weekday = comps.weekday - 1 13 14//OSが用意している文字列を利用して曜日を求める(weekdaySymbolsを使えば「○曜日」になる) 15let youbi = NSDateFormatter().shortWeekdaySymbols[weekday] 16print("((youbi))")
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/24 15:28