如何从scala中的日期或时间戳字符串中查找日期模式

时间:2017-08-03 09:43:58

标签: scala date datetime

实际上我想从日期或时间戳字符串中找出日期格式。

假设我有“12/2/2017”日期字符串,那么结果应为“MM / dd / yyyy”。

或者如果,我有“12-31-2017 10:12:00 AM”,结果应该是“MM-dd-yyyy HH:mm:ss a”。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分: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"输入dateParttimePart输入参数将是" 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)
  }