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

少年恃险若平地,独倚长剑凌清秋。这篇文章主要讲述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);

上面的代码完全返回我想要的内容
另一答案【Android java以24小时格式获取当前时间】这将为您提供24小时格式的时间
public String getFormattedTime() { Calendar calendar = Calendar.getInstance(); SimpleDateFormat dateFormatter = new SimpleDateFormat("HH:mm:ss", Locale.getDefault()); return dateFormatter.format(calendar.getTime()); }


    推荐阅读