これは私のコードです:
let currentDate = NSDate()
let usDateFormat = NSDateFormatter()
usDateFormat.dateFormat = NSDateFormatter.dateFormatFromTemplate("d MMMM y", options: 0, locale: NSLocale(localeIdentifier: "en-US"))
cmt.date = usDateFormat.stringFromDate(currentDate)
「2015年10月15日」になると予想していましたが、「2015年10月15日」になりました。月はスウェーデン語ロケールです。
私は何を間違えましたか?ロケールと形式の両方が間違っています。
これを試して:
let dateString = "2015-10-15"
let formater = NSDateFormatter()
formater.dateFormat = "yyyy-MM-dd"
print(dateString)
formater.locale = NSLocale(localeIdentifier: "en_US_POSIX")
let date = formater.dateFromString(dateString)
print(date)
Swift 3 Xcode 8
let dateString = "2015-10-15"
let formater = DateFormatter()
formater.dateFormat = "yyyy-MM-dd"
print(dateString)
formater.locale = Locale(identifier: "en_US_POSIX")
let date = formater.date(from: dateString)
print(date!)
役に立てば幸いです。
dateFormatFromTemplate
の- ドキュメント を確認してください。それはそれを述べています:
戻り値
Localeで指定されたロケールに適切に配置された、テンプレートで指定された日付形式コンポーネントを表すローカライズされた日付形式文字列。
返される文字列には、テンプレートで指定されたコンポーネントが正確に含まれていない場合がありますが、たとえばロケール固有の調整が適用されている場合があります。
それがアレンジと言語に関する問題です。探している日付を取得するには、日付フォーマッターのdateFormat
とlocale
を次のように設定する必要があります。
let currentDate = NSDate()
let usDateFormat = NSDateFormatter()
usDateFormat.dateFormat = "d MMMM y"
usDateFormat.locale = NSLocale(localeIdentifier: "en_US")
cmt.date = usDateFormat.stringFromDate(currentDate)
より良いSwift 3/3.1ソリューション:
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US")
このコードを試してください
let locale1:Locale = NSLocale(localeIdentifier: "en_US") as Locale
var date = Date().description(with: locale1)
print(date)
// 2017年4月3日月曜日...