-2
其实我想从日期或时间戳字符串中找出日期格式。如何从日期或时间戳字符串中找到日期模式scala
假设如果我有“12/2/2017”日期字符串,那么结果应该是“MM/dd/yyyy”。
或者,如果我有“12-31-2017 10:12:00 AM”,结果应该是“MM-dd-yyyy HH:mm:ss a”。
任何人都可以帮助我吗?
其实我想从日期或时间戳字符串中找出日期格式。如何从日期或时间戳字符串中找到日期模式scala
假设如果我有“12/2/2017”日期字符串,那么结果应该是“MM/dd/yyyy”。
或者,如果我有“12-31-2017 10:12:00 AM”,结果应该是“MM-dd-yyyy HH:mm:ss a”。
任何人都可以帮助我吗?
我昨天刚做过类似的工作。在某些情况下,我会收到“08.02.2017 14:00”的输入,在其他情况下,我会收到“8/2/17 14:00”。所以我想出了这种实用的方法:
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”。 我需要这个,因为我解析了我的自动化代码中的两个文本字段。下面是使用的例子:
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)
}
这个问题是https://stackoverflow.com/questions/12166956/understanding-jodatime-datetime-parsestring-formatter –
日期可以在**的任何可能的重复**格式还是你有一组可能的格式?你如何决定** 12/2/2017 **是12月2日还是2月12日? – 2017-08-03 14:13:06
@ Dr.Vick,不,不是。这是关于从传递给你的字符串中推断出模式的。这不是关于使用已知模式 –