質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

2回答

1989閲覧

SwiftでのStringからの曜日取得について

P-san

総合スコア21

Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/08/08 03:57

編集2016/08/08 03:58

###前提・実現したいこと
SwiftでString型から曜日を取得したいとのですがいい方法が思いつきません。
NSDate型に変換すればよさそうな気がしますが上手くできません。
よろしくお願いします。
###該当のソースコード
var str = "20160808" //ここから何とかして"(月)"という文字列を取得したい。

var youbi = "" //ここに曜日を格納したい。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

二番煎じですが。

swift

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))")

投稿2016/08/08 08:51

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

Swift

1var str = "20160808" 2var insertIdx = str.startIndex.advancedBy(4) 3★str.insert("-", atIndex: insertIdx) 4★insertIdx = str.startIndex.advancedBy(7) 5★str.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) //"月"

strの部分を20XX-XX-XXの形で持ってこれるなら、
「★」の部分は不要です。かなり汚くなりましたが、こんな感じでどうでしょうか。

投稿2016/08/08 05:26

Y_M

総合スコア265

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

P-san

2016/08/08 06:19 編集

求めていた通りの結果になりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問