使用要在日历中显示的 joda 日期时间以分钟为单位显示时间间隔(以分钟为单位)



我想显示15 分钟或 30 分钟的时间间隔列表,例如

喜欢

1:00
1:15
1:30
1:45

1:00
1:30
2:00
2:30

下面的代码正在使用Joda 日期时间库,它以小时间隔显示时间。我只想以 15 或 30 分钟的间隔显示时间。

val hourDateTime = DateTime().withDate(2000, 1, 1).withTime(0, 0, 0, 0)
for (i in 1..23) {
val formattedHours = Formatter.getHoursWithMinutes(context!!, hourDateTime.withHourOfDay(i))
}

格式化程序.kt

fun getHoursWithMinutes(context: Context, dateTime: DateTime) = dateTime.toString("h:mm a")

而不是显示日期,如 1:00 、2:00 、3:00、4:00 以15 或 30 分钟的间隔显示

当前工作视图,正在使用简单日历

我尝试了下面写的另一种方法,但这个时间间隔发生了变化,但小时保持不变,就像

12:00 -> 12:30 -> 12:00 -> 12:30

val hourDateTime = DateTime().withDate(2000, 1, 1).withTime(0, 0, 0, 0)
var interval = 30
for (i in 1..23) {
if(i == 1 ) interval = 0
val formattedHours = Formatter.getHoursWithMinutes(context!!, hourDateTime.withMinuteOfHour(interval) )
interval += 30
if(interval == 60) interval = 0
} 

java.time 和 ThreeTenABP

我不会写 Kotlin。请从我的爪哇翻译。

Duration interval = Duration.ofMinutes(15);
LocalTime time = LocalTime.of(1, 0);
for (int i = 0; i < 10; i++) {
System.out.println(time);
time = time.plus(interval);
}

输出:

01:00
01:15
01:30
01:45
02:00
02:15
02:30
02:45
03:00
03:15

将间隔设置为Duration.ofMinutes(30)以获得 01:00、01:30 等。

我正在使用java.time,现代Java日期和时间API,通过向后移植,见下文.java.time是Joda-Time的继任者。我确信Joda-Time也可以与上述非常相似的事情,以防您已经在使用Joda-Time并且不想迁移到java.time。

问:java.time 不需要 Android API 级别 26 吗?

java.time在较旧和较新的Android设备上都能很好地工作。它只需要至少Java6

  • 在 Java 8 及更高版本以及较新的 Android 设备(从 API 级别 26(中,内置了现代 API。
  • 在非Android Java 6和7中,获得ThreeTen Backport,现代类的反向移植(JSR 310的ThreeTen;请参阅底部的链接(。
  • 在(较旧的(Android上使用Android版本的ThreeTen Backport。它被称为ThreeTenABP。并确保从带有子包的org.threeten.bp导入日期和时间类。

链接

  • Oracle 教程:日期时间解释如何使用 java.time。
  • Java 规范请求 (JSR( 310,其中首次描述了java.time
  • ThreeTen Backport 项目,将java.time向 Java 6 和 7 的反向移植(ThreeTen 用于 JSR-310(。
  • ThreeTenABP,ThreeTen Backport 的安卓版
  • 问:如何在Android项目中使用ThreeTenABP,并进行了非常详尽的解释。

相关内容

  • 没有找到相关文章

最新更新