回答編集履歴
1
dateFormatの指定に冗長なところがあったので、コードを改善し、説明を追加しました。
test
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
df.locale = Locale(identifier: "ja_JP")
|
6
6
|
|
7
|
-
df.dateFormat =
|
7
|
+
df.dateFormat = "cccc"
|
8
8
|
|
9
9
|
print("(df.string(from: Date()))")
|
10
10
|
|
@@ -12,4 +12,24 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
-
playgroundで、"金曜日"と出力されました
|
15
|
+
上記で、playgroundで、"金曜日"と出力されました。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
`df.locale`でロケールを指定して、`df.dateFormat`に変換するときのフォーマット文字列を指定すると、それらに従って`df.string(from:)`で整形された文字列が得られます。
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
フォーマット文字列は、[こちらに詳細な定義がありますが](http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns)、どういう形式にするかを指定するものです。
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
`DateFormatter.dateFormat(fromTemplate: "EEEE", options: 0, locale: Locale(identifier: "ja_JP"))`は、"cccc"という値を返してきます。
|
28
|
+
|
29
|
+
このクラスメソッドは、指定したロケールに最適なフォーマット文字列を返すものです。ここでのロケールはフォーマット文字列を選ぶのに適用され、実際に変換するときのロケールを指定しているのではありません。
|
30
|
+
|
31
|
+
変換するときのロケールは、`DateFormatter`の`locale`に指定します。
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
なお、上記ページをみると、"EEEE"も"cccc"も同じ結果が得られるので、どちらでもよいと思います。
|