Java获取当前时间前几个小时
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java获取当前时间前几个小时相关的知识,希望对你有一定的参考价值。
参考技术Aimport java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
/**
* @author red
* @since 1.8
*/
public class App
public static void main(String[] args)
//当前时间
LocalDateTime dateTime = LocalDateTime.now();
//当前时间两个小时前
LocalDateTime before = dateTime.minus(2, ChronoUnit.HOURS);
//当前时间两个小时后
LocalDateTime after = dateTime.plus(2, ChronoUnit.HOURS);
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());
}
以上是关于Java获取当前时间前几个小时的主要内容,如果未能解决你的问题,请参考以下文章