Android java以24小时格式获取当前时间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android java以24小时格式获取当前时间相关的知识,希望对你有一定的参考价值。

我想通过使用下面的代码以24小时格式获取当前时间:

Calendar cal = Calendar.getInstance();
int currentHour = cal.get(Calendar.HOUR);
int currentMinute = cal.get(Calendar.MINUTE);

System.out.println(currentHour);
System.out.println(currentMinute);

我现在的时间是新加坡时间3.11PM。但是当我执行上面的代码时,我得到7.09。有任何想法吗?

提前致谢!

答案

我无法确定您提供的信息,但可能的原因是您的JVM的时区设置是UTC。如果您在新加坡时间15:09:55运行您的程序,则会以UTC格式打印为7和9。如果您稍后在新加坡时间读取您的时钟,或者从与您的设备(或模拟器)不完全同步的时钟读取它,它将在下午3:11显示。

JVM通常从设备中获取其时区设置,但是可能有各种各样的原因导致它从其他地方获取它。

正如Anton A.在评论中所说,你需要HOUR_OF_DAY而不是HOUR 24小时格式(虽然时间是UTC时间的早上7:09,所以这个错误不是你的情况下意外时间的原因)。

java.time

打印当前时间的现代方式是:

    System.out.println(LocalTime.now(ZoneId.of("Asia/Singapore")));

你使用的Calendar课程已经过时且设计不佳。 LocalTime是来自java.time的类,现代Java日期和时间API,表示一天中的时间(没有时区,但now方法接受一个时区来初始化到该区域中的当前时间)。如果您的android设备小于新设备(在API级别26下),则需要使用the ThreeTenABP library才能使用它。见How to use ThreeTenABP in Android Project

还有一个链接:Oracle tutorial: Date Time解释如何使用java.time

另一答案

我已经找到了解决方案:

Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("GMT+8"));
currentHour = cal.get(Calendar.HOUR_OF_DAY);
currentMinute = cal.get(Calendar.MINUTE);

上面的代码完全返回我想要的内容

另一答案

这将为您提供24小时格式的时间

public String getFormattedTime() {
    Calendar calendar = Calendar.getInstance();
    SimpleDateFormat dateFormatter = new SimpleDateFormat("HH:mm:ss", Locale.getDefault());
    return dateFormatter.format(calendar.getTime());
}

以上是关于Android java以24小时格式获取当前时间的主要内容,如果未能解决你的问题,请参考以下文章

Java 获取当前时间的小时(24小时制)

Java 获取当前时间的小时(24小时制)

如何在 java 上设置日期的 24 小时格式?

Android基础到进阶UI 时钟TextClock 使用+实例

Android基础到进阶UI 时钟TextClock 使用+实例

js获取当前的时间显示的是24小时的时间吗