如何在 time4j 库中使用 PrettyTime?
How to use PrettyTime in time4j library?
我收到的短信以秒为单位(例如 7261)。我需要将其转换为这种格式:
2 小时、1 米、1 秒
我正在使用 time4j 库。根据他们的 Github page,我正在做这样的事情:
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)
有什么想法吗?甚至更好的解决方案?
您是否缺少一些依赖项?
<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>
在我的测试中,您的代码工作正常。
val duration = Duration.of(7261, ClockUnit.SECONDS).with(Duration.STD_CLOCK_PERIOD)
val prettifiedDuration = PrettyTime.of(Locale.ENGLISH).print(duration)
println(prettifiedDuration)
输出:
2 hours, 1 minute, and 1 second
所以,我意识到 Android 项目有一个单独的库:
https://github.com/MenoData/Time4A
对于 Gradle,添加此依赖项:
implementation("net.time4j:time4j-android:4.6-2020a")
然后在您的应用程序 class 中初始化库:
class MyApplication : DaggerApplication() {
override fun onCreate() {
super.onCreate()
ApplicationStarter.initialize(this, true)
}
}
然后就可以按照问题中的描述使用了
我收到的短信以秒为单位(例如 7261)。我需要将其转换为这种格式: 2 小时、1 米、1 秒
我正在使用 time4j 库。根据他们的 Github page,我正在做这样的事情:
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)
有什么想法吗?甚至更好的解决方案?
您是否缺少一些依赖项?
<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>
在我的测试中,您的代码工作正常。
val duration = Duration.of(7261, ClockUnit.SECONDS).with(Duration.STD_CLOCK_PERIOD)
val prettifiedDuration = PrettyTime.of(Locale.ENGLISH).print(duration)
println(prettifiedDuration)
输出:
2 hours, 1 minute, and 1 second
所以,我意识到 Android 项目有一个单独的库: https://github.com/MenoData/Time4A
对于 Gradle,添加此依赖项:
implementation("net.time4j:time4j-android:4.6-2020a")
然后在您的应用程序 class 中初始化库:
class MyApplication : DaggerApplication() {
override fun onCreate() {
super.onCreate()
ApplicationStarter.initialize(this, true)
}
}
然后就可以按照问题中的描述使用了