在JIRA中设置问题估算时,您可以输入"1d 2h 30m"之类的字符串,JIRA会将其(我假设)转换为相应的毫秒数。

有可用的Java库可以执行此操作吗?

我正在使用一个Spring托管bean,该bean具有一个指示应该清除目录的频率的属性,并且我希望允许配置采用人类可读的字符串,而不是显式的毫秒数。

另外,如果有我没有想到的更好的方法,我很想听听。

最佳答案

解析器不太复杂:

public static long parse(String input) {
   long result = 0;
   String number = "";
   for (int i = 0; i < input.length(); i++) {
     char c = input.charAt(i);
     if (Character.isDigit(c)) {
       number += c;
     } else if (Character.isLetter(c) && !number.isEmpty()) {
       result += convert(Integer.parseInt(number), c);
       number = "";
     }
   }
   return result;
}

private static long convert(int value, char unit) {
  switch(unit) {
    case 'd' : return value * 1000*60*60*24;
    case 'h' : return value * 1000*60*60;
    case 'm' : return value * 1000*60;
    case 's' : return value * 1000;
  }
  return 0;
}

该代码非常容错,它几乎忽略了所有它无法解码的内容(并且忽略了任何惠特空间,因此它接受“1d 1s”,“1s 1d”,“1d20m300s”等)。

关于java - 是否有一个Java库可以将描述时间量度的字符串(例如 "1d 1m 1s")转换为毫秒?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4015196/

10-13 09:13