java获取系统时间小时数加1在Centos7与Windows运行结果的差异

本文探讨了一个Java工具类在获取系统时间并加1小时时在Windows和Linux平台上的不同行为。在Linux环境下,凌晨0点加1小时后显示为12点,而在Windows上则正常。作者提出可能原因是时间处理的差异,并尝试通过将加1小时改为减10小时来修正这个问题,在Linux上得到了预期效果。然而,对于为何两者初始时间相差11小时的原因,仍有待进一步研究。
摘要由CSDN通过智能技术生成

1、获取系统时间小时数加1的工具类:

	public class GetHourAddOne {
    public static String getHour(){
        Calendar calendar=Calendar.getInstance();
        Date nowTime=calendar.getTime();
        //原来小时数:
        //String hh = new SimpleDateFormat("HH").format(nowTime);
        //System.out.println(hh);
        calendar.add(Calendar.HOUR, 1); //减填负数
        nowTime=calendar.getTime();
        String hour = new SimpleDateFormat("HH").format(nowTime);
        return hour;
    }
}

2、在windows平台和linux平台运行结果的差异:
2.1 在windows平台的运行结果:
在这里插入图片描述
由图在windows平台上能正常得到系统时间小时数加1

2.2在linux(centos7)平台上的运行结果
在这里插入图片描述
由图知,虽然linux系统时间是0点,但调用时间小时数加1之后得到的是12点,并没有得到我们想要的时间数为1的效果。

3、自己的初步调整策略:
linux系统时间的小时数为0,但是调用小时数加1之后得到的12,并没有得到加1显示为1的结果,说明程序调用的时间是拿系统时间为11去加1得到的结果,而不是拿0+1去得到的结果,为了得到我们想要的在Linux系统时间的小时数为0时显示为1的效果,可以更改获取时间工具类,把原来的加1改为减10就是我们想要的结果了。
3.1 、获取时间工具类的更改:

public class GetHourAddOne {
    public static String getHour(){
        Calendar calendar=Calendar.getInstance();
        Date nowTime=calendar.getTime();
        //原来小时数:
        //String hh = new SimpleDateFormat("HH").format(nowTime);
        //System.out.println(hh);
        calendar.add(Calendar.HOUR, -10); //减填-,但是Linux下不OK,填入-10测试一下
        nowTime=calendar.getTime();
        String hour = new SimpleDateFormat("HH").format(nowTime);
        return hour;
    }
}

3.2 、更改之后实现的效果:
在这里插入图片描述
由图知,能实现需要的结果

4、还未解决的疑惑点:
尚未明确为何调用系统时间的小时数加1时,windows与linux的启动初始时间值想差了11。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值