android - 将带时间的字符串转换为分钟

标签 android time type-conversion

我正在开发一个获取时间(持续时间)值作为字符串的 Android 应用。

例如,应用可以获得如下值:6 小时 43 分钟

或类似的值:15 分钟

我正在寻找一种在几分钟内将此字符串转换为整数值的方法。

我试过使用这个函数,但我无法提取所需的值:

str = str.replaceAll("[^\\d.]", "");

编辑:

结果可能是 6 小时,唯一已知的条件是分钟总是四舍五入为整数,最小值为 1 分钟

最佳答案

使用正则表达式获取每对数字/时间单位。您可以轻松地解析它:

(\\d+) (\\w+)
  • 第 1 组:数值

  • 第二组:时间单位

    (请注意,我在两者之间使用了一个空格(如果您愿意,可以是可选的)

使用 Java Pattern 类来使用正则表达式

    Pattern p = Pattern.compile("(\\d+) (\\w+)");

然后您只需迭代每个匹配项以获得一对 type/value

    Matcher m = p.matcher(s);
    while(m.find()){
        String type = m.group(2);
        int value = Integer.parseInt(m.group(1))
        ...
    }
    

由此,只需使用一个开关将数字转换为分钟并将其添加到变量中,省略 break 以获得一个不错(但效率不高)的转换器:

switch(type){
//Add more time unit in the correct order if needed
case "days":
    value *= 24;
case "hours":
    value *= 60;
case "mins":
    mins += value;
    break;
}

每种类型都会将值转换为正确的分钟数,最后,您将得到以分钟为单位的结果。

关于android - 将带时间的字符串转换为分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47324280/

相关文章:

arrays - 无法在函数内将 [Double] 转换为 Double

java - 如何修复 'android.os.NetworkOnMainThreadException' ?

php - 如何使用 PHP 将 "HH:MM:SS"字符串转换为秒数?

c++ - For循环不执行

java - 如何使用 Joda-Time 计算两个日期之间的差异...等

perl - 如何在 Perl 中以纳秒为单位获取系统时间?

php - 如何从 php 向 Titanium mobile 发送和接收多维数组?

Android TextWatcher.afterTextChanged 与 TextWatcher.onTextChanged

java - 如何解决JSONArray问题,获取不到数据,Android Studio

android - 在 Canvas 上绘制两个 3D 字符串?