2016-12-07 6 views
0

ユーザーが特定の形式で日付を入力するかどうかを確認する必要があります。私はUITextFieldからこの入力を取得し、私はこの方法を検証しよう:DateFormatterが実際に日付の形式をチェックしていない

func checkDateInput(inputStr: String) -> Bool { 

    let dateFormatter = DateFormatter() 
    dateFormatter.dateFormat = "MM-dd-yyyy" 

    if let date = dateFormatter.date(from: inputStr) { 
     return true 
    } 

    return false 
} 

このメソッドを呼び出す前に、私はinputStrが空でないことを確認してください。 アプリを実行したときに「12/07/2016」と入力すると、checkDateInput(inputStr: "12/07/2016")の結果としてtrueが返されますが、falseと表示されることが予想されます。ユーザーに「12-07- 2016」。 DateFormatterは、私が提供する形式で " - "と "/"異なる文字を考慮していないようです。

日付の形式に完全に一致する方法を教えてください。たDateFormatterはまだその間違った入力をフォーマットできるので、それがtrueを返したシンプルなソリューションのための

+0

この方法のように、2であなたのinputStr5位置を文字を確認することができます。正しい文字列が必要な場合は、dateFormatter.string(date:from)を呼び出して正しい文字列を取得してください。チェックが重要な場合は、慣れていない正規表現を使用するか、ネイティブのString関数を使用してチェックするだけで十分です –

答えて

0

あなたは

func checkDateInput(inputStr: String) -> Bool { 

    let ch2 = inputStr[inputStr.index(inputStr.startIndex, offsetBy: 2)] 
    let ch5 = inputStr[inputStr.index(inputStr.startIndex, offsetBy: 5)] 

    if ch2 != "-" || ch5 != "-" { 
     return false 
    } 

    let dateFormatter = DateFormatter() 
    dateFormatter.dateFormat = "MM-dd-yyyy" 

    if let date = dateFormatter.date(from: inputStr) { 
     return true 
    } 

    return false 
} 
関連する問題