Android 如何在time4j库中使用PrettyTime?

Android 如何在time4j库中使用PrettyTime?,android,kotlin,time,duration,time4j,Android,Kotlin,Time,Duration,Time4j,我正在接收以秒为单位的文本(例如7261)。我需要将其转换为以下格式: 2小时,1米,1秒 我正在使用time4j库。根据他们的说法,我正在做这样的事情: val duration = Duration.of(7261, ClockUnit.SECONDS).with(Duration.STD_CLOCK_PERIOD) val prettifiedDuration = PrettyTime.of(Locale.ENGLISH).print(duration) 但是,我得到了这个错误: 06-

我正在接收以秒为单位的文本(例如7261)。我需要将其转换为以下格式: 2小时,1米,1秒

我正在使用time4j库。根据他们的说法,我正在做这样的事情:

val duration = Duration.of(7261, ClockUnit.SECONDS).with(Duration.STD_CLOCK_PERIOD)
val prettifiedDuration = PrettyTime.of(Locale.ENGLISH).print(duration)
但是,我得到了这个错误:

06-22 11:50:52.133 12161 12244 E AndroidRuntime: java.lang.ExceptionInInitializerError
06-22 11:50:52.133 12161 12244 E AndroidRuntime:    at net.time4j.base.ResourceLoader.getInstance(ResourceLoader.java:167)
06-22 11:50:52.133 12161 12244 E AndroidRuntime:    at net.time4j.PrettyTime.<clinit>(PrettyTime.java:95)
06-22 11:50:52.133 12161 12244 E AndroidRuntime:    at net.time4j.PrettyTime.of(PrettyTime.java:198)
06-22 11:50:52.133 12161 12244 E AndroidRuntime:java.lang.ExceptionInInitializeError
06-22 11:50:52.133 12161 12244 E AndroidRuntime:at net.time4j.base.ResourceLoader.getInstance(ResourceLoader.java:167)
06-22 11:50:52.133 12161 12244 E AndroidRuntime:at net.time4j.PrettyTime.(PrettyTime.java:95)
06-22 11:50:52.133 12161 12244 E AndroidRuntime:at net.time4j.PrettyTime.of(PrettyTime.java:198)

有什么想法吗?甚至更好的解决方案?

您是否缺少一些依赖项

    <dependency>
        <groupId>net.time4j</groupId>
        <artifactId>time4j-base</artifactId>
        <version>5.6</version>
    </dependency>
    <dependency>
        <groupId>net.time4j</groupId>
        <artifactId>time4j-sqlxml</artifactId>
        <version>5.6</version>
    </dependency>
    <dependency>
        <groupId>net.time4j</groupId>
        <artifactId>time4j-tzdata</artifactId>
        <version>5.0-2020a</version>
    </dependency>
输出:

2 hours, 1 minute, and 1 second

因此,我意识到Android项目有一个单独的库:

对于Gradle,添加此依赖项:

implementation("net.time4j:time4j-android:4.6-2020a")
在应用程序类中,初始化库:

class MyApplication : DaggerApplication() {

    override fun onCreate() {
        super.onCreate()
        ApplicationStarter.initialize(this, true)
    }
}
然后你可以像问题中描述的那样使用它。

Nope:)我实际上意识到Android项目有一个单独的库,需要初始化
class MyApplication : DaggerApplication() {

    override fun onCreate() {
        super.onCreate()
        ApplicationStarter.initialize(this, true)
    }
}