2017-08-03 5 views
-2

実際には、日付またはタイムスタンプ文字列から日付形式を探したいと思っています。日付またはタイムスタンプ文字列から日付パターンを見つける方法

「12/2/2017」の日付文字列がある場合、結果は「MM/dd/yyyy」である必要があります。

または、「12-31-2017 10:12:00 AM」の場合、結果は「MM-dd-yyyy HH:mm:ss a」になります。

誰でも手伝ってもらえますか?

+0

この質問はhttps://stackoverflow.com/questions/12166956/understanding-jodatime-datetime-parsestring-formatterの複製である –

+1

日付は任意の可能**にすることができ**形式か、可能な形式のセットがありますか? ** 12/2/2017 **が12月2日か2月12日かどうかはどうやって決めるのですか? –

+1

@ Dr.ヴィック、そうではありません。これは、あなたに渡された文字列からパターンを推測することです。既知のパターンを使用することではありません –

答えて

0

私はちょうど昨日同様の仕事をしました。場合によっては「08.02.2017 14:00」と入力し、それ以外の場合は「8/2/17 14:00」とします。ですから、私はこのutilメソッドを考え出しました:

def parseDateTime(datePart:String, timePart:String):LocalDateTime = { 
    val dateDelimiter = if (datePart.indexOf('.') != -1) "." else "/" 
    val dateFactors = datePart.split(dateDelimiter) 
    val dayPattern = if(dateFactors(1).size == 1) "d" else "dd" 
    val monthPattern = if(dateFactors(0).size == 1) "M" else "MM" 
    val yearPattern = if(dateFactors(2).size == 2) "yy" else "yyyy" 
    val formatter = DateTimeFormatter.ofPattern(monthPattern + dateDelimiter + dayPattern + dateDelimiter + yearPattern + " HH:mm") 
    LocalDateTime.parse(datePart + " " + timePart, formatter) 
    } 

少し読んだら、それを少し反映してください。 「08.02.2017 14:00」の場合、datePartおよびtimePartの入力パラメータは、それに対応して「08.02.2017」および「14:00」になります。 オートメーションコードで2つのテキストフィールドを解析するので、これが必要です。ここでは使用例です:

def startDateTime(implicit driver: WebDriver):LocalDateTime = withMainWindow{ 
    val datePart = textField(id("dateRangeFormById[0].startDate")).value 
    val timePart = textField(id("dateRangeFormById[0].startTime")).value 
    parseDateTime(datePart, timePart) 
    } 
関連する問題