2017-11-06 10 views
1

iOSの11にnilを:iOSの11<についてNSDateFormatterのdateFromString:リターンが私はこのコードきた

NSDateFormatter *dateFormatter = [NSDateFormatter new]; 
dateFormatter.dateStyle = NSDateFormatterLongStyle; 
dateFormatter.timeStyle = NSDateFormatterLongStyle; 

NSDate *myDate = [dateFormatter dateFromString:@"2016-03-01 13:42:17"]; 

を、予定日が発見されたが、用のiOS 11は(iOSの11.1とiPhoneでテスト済み)これはnilです。

アップルのドキュメントにdateFromString:のAPIの変更はありませんでした。どうしましたか?

+0

::)

はここスウィフトバージョンです。だからあなたの文字列にスイートではないグローバルDateformatを取るでしょう。そういうわけではないのです。 –

答えて

4

基本的に日付/時刻スタイルを使用して日付文字列を変換しないでください。スタイルは、異なるロケールの異なる文字列を表します。

ではなく、固定の日付形式を使用してen_US_POSIXにロケールを設定します。ヴァディアンの答え@

NSDateFormatter *dateFormatter = [NSDateFormatter new]; 
dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]; 
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; 

NSDate *myDate = [dateFormatter dateFromString:@"2016-03-01 13:42:17"]; 
+0

ロケールを '[NSLocale currentLocale]'に設定する必要がある場合はどうすればよいですか? – nayem

+1

変換後にロケールを変更することができます。その日付文字列の中で最も信頼性の高いロケールは、Posixです。 – vadian

0

が同様スウィフトに私のために働きました!ありがとう!あなたが最初のDATEFORMATを指定しなかった

let dateFormatter = DateFormatter() 
dateFormatter.locale = Locale(identifier: "en_US_POSIX") 
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" 

Date myDate = dateFormatter.date(from: "2016-03-01 13:42:17") 
関連する問題