2016-09-28 18 views
1

現在、yyMMdd(マレーシアIC)フォーマットを使用している日付にユーザーが入力した一連の文字列(例:900130)を変換するコードがあります。次のように文字列を変換するための私のコード:日付のNSDateフォーマットは有効な日付ではありません

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"yyMMdd"]; 
date = [dateFormat dateFromString:temp]; // temp = string key in by user 

私はいくつかのテストを実行していたときに問題が私には発生しなかったが、私はそれをテストするために他の誰かにそれを与えたとき、問題はどこの文字列490130発生30/1/1949に変換する必要がありましたが、それを30/1/2049に変換していました。私は年が2桁の年のために50未満と19XXの場合は2桁の年のために20XXを負い代わり30/1/2049

+1

あなたの2桁の年が19xxと20xxの間にあると思われるカットオフは何ですか? – rmaddy

+1

日付に100年を追加しますか? – matt

+1

または日付から100年を差し引く。 – ozgur

答えて

1

NSDateFormatterの30/1/1949に490130を変換するにはどうすればよい

年が50より大きい場合はそれを仮定します。

50と異なるカットを望むようです。別のカットオフを使用するための組み込みサポートはありません。

1つのオプションは、最初の2文字を見て、それがあなたのカットオフの下かどうかを確認することです。その後、必要に応じて文字列の先頭に19または20のいずれかを追加します。次に、yyyyMMddを使用して文字列を解析します。

+0

日付フォーマッタの説明をありがとう。現在の年と年をチェックして文字列の先頭に "19"または "20"を手動で追加し、文字列をyyyyMMddとして解析することで問題を解決しました –

関連する問題