Java获取当前时间前几个小时

Posted

tags:

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

参考技术A
import 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获取当前时间前几个小时的主要内容,如果未能解决你的问题,请参考以下文章

java怎样获得当前时间的前几天

获取当前时间的前几个月的星期起始结束时间

Java 怎么获取当前时间前一个小时的时间

Java 怎么获取当前时间前一个小时的时间

js如何获取前几个月或后几个月时间

JAVA如何获取当前小时的毫秒数呢?是当前小时,比如2014-03-04 下午16:00:00的毫秒数