首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 7中的ISO 8601时间持续时间解析

Java 7中的ISO 8601时间持续时间解析
EN

Stack Overflow用户
提问于 2020-09-29 14:35:20
回答 2查看 357关注 0票数 1

我正在解析YouTube API v3,并试图提取似乎采用ISO8601格式的持续时间。现在,Java 8中有内置的方法,但这要求我必须将API级别提高到26 (Android ),这是我做不到的。有什么方法来解析它吗?我使用的示例字符串是:PT3H12M

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-29 15:11:39

好消息!现在,您可以使用Android插件4.0.0+来处理4.0.0+ API。

https://developer.android.com/studio/write/java8-support#library-desugaring

因此,这将允许您使用与Java相关的Java8的内置方法:)

这里有desugared的详细规范:

https://developer.android.com/studio/write/java8-support-table

您只需将安卓插件的版本添加到4.0.0+,并将这些行添加到应用程序模块级别的build.gradle中即可:

代码语言:javascript
复制
android {
  defaultConfig {
    // Required when setting minSdkVersion to 20 or lower
    multiDexEnabled true
  }

  compileOptions {
    // Flag to enable support for the new language APIs
    coreLibraryDesugaringEnabled true
    // Sets Java compatibility to Java 8
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

dependencies {
  coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.9'
}
票数 2
EN

Stack Overflow用户

发布于 2020-09-29 21:22:46

如果您的Android级别仍然不符合Java-8,请检查通过desugaring提供的Java 8+ API如何在安卓项目中使用ThreeTenABP

下面的部分将讨论如何使用现代日期时间API来完成这一任务。

与Java-8:

代码语言:javascript
复制
import java.time.Duration;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        Duration duration = Duration.parse("PT3H12M");
        LocalTime time = LocalTime.of((int) duration.toHours(), (int) (duration.toMinutes() % 60));
        System.out.println(time.format(DateTimeFormatter.ofPattern("h:m a")));
    }
}

输出:

代码语言:javascript
复制
3:12 am

与Java-9:

代码语言:javascript
复制
import java.time.Duration;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        Duration duration = Duration.parse("PT3H12M");
        LocalTime time = LocalTime.of(duration.toHoursPart(), duration.toMinutesPart());
        System.out.println(time.format(DateTimeFormatter.ofPattern("h:m a")));
    }
}

输出:

代码语言:javascript
复制
3:12 am

请注意,Duration#toHoursPartDuration#toMinutesPart是在Java-9中引入的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64121853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档