如何在 Android Kotlin 的列表中存储 24 小时格式

viv*_*odi 3 java android calendar date kotlin

嘿,我想返回 24 小时时间范围的时间对象列表。这意味着我需要一个逻辑来获取从 00.00 到 23.00 的列表中的小时数。在列表中 [ 00.00 , 01.00 , 02.00 ,..... 23.00 ] 。如果我搜索特定的索引,例如

println(timeList[3])
Run Code Online (Sandbox Code Playgroud)

它会回来

03.00.
Run Code Online (Sandbox Code Playgroud)

如何通过Calendar对象或任何其他类实现此逻辑。有没有人知道如何获得这种类型的列表。

Arv*_*ash 6

使用可创建Listjava.time.LocalTime

import java.time.LocalTime;
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<LocalTime> list = new ArrayList<>();
        for (int i = 0; i < 24; i++) {
            list.add(LocalTime.of(i, 0));
        }

        System.out.println(list.get(3));
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

03:00
Run Code Online (Sandbox Code Playgroud)

进一步了解java.time,在现代日期时间API *开拓者:日期时间

使用旧版 API:

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
        List<String> list = new ArrayList<>();
        
        for (int i = 0; i < 24; i++) {
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.HOUR_OF_DAY, i);
            calendar.set(Calendar.MINUTE, 0);
            list.add(sdf.format(calendar.getTime()));
        }

        System.out.println(list.get(3));

    }
}
Run Code Online (Sandbox Code Playgroud)

* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用ThreeTen-Backport,它将大部分java.time功能向后移植到 Java 6 和 7。如果您正在为 Android 项目和您的 Android API 工作级别仍然不符合 Java-8,请检查通过 desugaringHow to use ThreeTenABP in Android Project可用的 Java 8+ APIs

  • 看起来正是您需要的,@vivekmodi (2认同)