Java 类似于JIRA时间格式的时间解析库

Java 类似于JIRA时间格式的时间解析库,java,scala,Java,Scala,我正在寻找一个字符串解析库,格式为“2y 1M 3w 4d 12h 20m 10s”(2年、1个月、3周、4天、12小时、20分钟和10秒)。将它们解析为毫秒可能是前进的最短路径。本质上,我希望从时间戳中添加/减去解析后的字符串 解决方案由@shmosel提供: import org.joda.time.format.PeriodFormatterBuilder val pf = new PeriodFormatterBuilder() .appendYears() .

我正在寻找一个字符串解析库,格式为“2y 1M 3w 4d 12h 20m 10s”(2年、1个月、3周、4天、12小时、20分钟和10秒)。将它们解析为毫秒可能是前进的最短路径。本质上,我希望从时间戳中添加/减去解析后的字符串

解决方案由@shmosel提供:

import org.joda.time.format.PeriodFormatterBuilder

val pf = new PeriodFormatterBuilder()
      .appendYears()
      .appendSuffix(" y", "y")
      .appendSeparator("", " ")
      .appendMonths()
      .appendSuffix(" M", "M")
      .appendSeparator("", " ")
      .appendWeeks()
      .appendSuffix(" w", "w")
      .appendSeparator("", " ")
      .appendDays()
      .appendSuffix(" d", "d")
      .appendSeparator("", " ")
      .appendHours()
      .appendSuffix(" h", "h")
      .appendSeparator("", " ")
      .appendMinutes()
      .appendSuffix(" m", "m")
      .appendSeparator("", " ")
      .appendSeconds()
      .appendSuffix(" s", "s")
      .toFormatter()

    // Is there a more idiomatic way to add
    val buffer = pf.parsePeriod(bufferPeriod)

请注意,订单很重要(
10y 10s
是有效的,
10s 10y
不是有效的)。

看起来这很合适,谢谢链接。