2016-08-12 8 views
0

私は以下のコードを先に試してみましたが、うまくいきましたが、与えられた形式に基づいて日付を検証できなくなりました。私は24-12-199として日付文字列を検証しようとしていた場合日付の検証は機能していません

NSDateFormatter *format = [[NSDateFormatter alloc] init]; 
[format setDateStyle:NSDateFormatterShortStyle]; 
[format setDateFormat:@"dd-MM-yyyy"]; 
NSDate *validateDOB = [format dateFromString:textField.text]; 
if (validateDOB != nil) 
    return YES; 
else 
    return NO; 

、validateDOBは「0199-12-23 18時06分32秒0000」

+1

フォーマットされた日付の 'locale'と' time zone'プロパティを設定します。 –

+0

どのような問題があったのか –

+0

あなたの年が間違っているかどうかチェックしてください '199'それは '1999' –

答えて

0

私は確信しているとして値を返していますあなたは0199-12-23 18:06:32 +0000これをデバッグコンソールから印刷しました。

こちらをご覧ください:+0000、終了時As NSDateオブジェクトは常に+0000タイムゾーンにデータを保存します。しかし、文字列に変換して印刷すると、自動的に現在のタイムゾーンが考慮され、日付が印刷されます。したがって、心配しないでください。保存された日付は完全に細かいです。

NSDateは常にGMT時間で保存されますが、NSDateFormatterは現在のタイムゾーンを追加してねじれを追加します。必要に応じてタイムゾーンを変更することができます。

+0

で返されます。"自動的にあなたの現在のタイムゾーンが考慮され、いいえ、それはしません!それはGMTでプリントされています( 'NSDate'はタイムゾーンを保存しません)。 – Droppy

+0

これで、NSDateを同じ日付フォーマッタを使用して再びNSStringに変換し直しました。保存した日付と同じ日付になっていますか、GMTの日付をgetttingしていますか?私はあなた自身の日付を印刷することを100%確信しています。 –

+0

理由は、NSDateは常にGMTに保存されていますが、タイムゾーンはありませんが、NSDateFormatterには現在のタイムゾーンに変換するタイムゾーンプロパティがあります –

関連する問題