Java日期计算溢出问题

2023-10-26

先看下面的代码:

            SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
            final Date beginDate = fmt.parse("2013-8-1");
            for(int i=0; i<30; i++) {
                long currentDay = beginDate.getTime() + (1000*60*60*24) * i;
                String dateStr = fmt.format(currentDay);
                System.out.println(dateStr);
            }
这段代码是想获取从2013-8-1开始,后推30天的所有日期。但是运行过程中会发现,从2013-8-26开始就无法正确显示了,2013-8-25号之后就变成了2013-7-6。输出结果如下所示:


经过断点调试分析发现,原来是下面这行代码出了问题:

long currentDay = beginDate.getTime() + (1000*60*60*24) * i;

(1000*60*60*24) * i 计算出来的结果是int型的,而当到达2013-8-26号时候,就超出了int的表示范围,发生了溢出,导致日期错误。
解决这个问题很简单,让计算结果为Long或long型即可,代码如下:

long currentDay = beginDate.getTime() + (1000L*60*60*24) * i;

在1000后面添加字母L,这样就将1000从int转换成了Long型,(1000L*60*60*24) * i 将会以Long类型进行存储,这样就不会发生溢出了!
这个错误初学者容易犯,看来还是基础不扎实啊! 


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java日期计算溢出问题 的相关文章

  • FileUtil.class.getClassLoader().getResource()返回空值null:解决办法

    String path FileUtil class getClassLoader getResource resources table xml 其中FileUtil是我自定义的工具类 之前的项目中通过FileUtil class get
  • 幸有一事,生死可许

    已然到了岁末 2014就要结束 迎来崭新的2015 颇多感慨 颇多难忘 与其说是2014年是我职业生涯中至关重要的一年 倒不如说是我人生道路上极为重要的一步来的更为贴切 这一年忙忙碌碌 一刻不得清闲 却是极为充实 没有迷茫 没有挣扎 有的只
  • Tomcat

    目录 一 Tomcat 的下载安装 二 启动 Tomcat 三 访问一下 Tomcat 的欢迎页面 四 Tomcat 的使用 tomcat 是 java 中最知名 最广泛使用的 HTTP 服务器 一 Tomcat 的下载安装 在浏览器中 搜
  • 表白墙程序

    目录 一 页面代码部分 二 设计程序 二 实现 doPost 编辑 三 实现 doGet 四 前端代码部分 五 使用数据库存储数据 一 页面代码部分 在之前的一篇博客中 已经写过了表白墙的页面代码实现 这里就不再重复了 页面代码如下 div
  • Java EE 企业级应用 复习 初识Spring框架

    Spring概述 Spring是由Rod Johnson组织开发的一个分层的Java SE EE一站式轻量级开源框架 它最核心的理念是控制反转和面向切面编程 Spring框架的优点 非倾入式设计 降低耦合性 方便开发 支持AOP编程 支持声
  • 使用阿里巴巴的EasyExcel操作Excel

    引入依赖
  • Spring 基础概念和核心思想

    目录 一 Spring 是什么 1 认识 loC 2 理解 Spring loC 3 DI 概念说明 一 Spring 是什么 我们通常所说的 Spring 指的是 Spring Framework Spring 框架 它是 个开源框架 有
  • HSQLDB 和 H2 数据库比较

    前面在介绍Vaadin SQL Container时使用了HSQLDB 也说过SQL Container在使用上并不十分方便 不如直接使用hibernate 来的实用 最近准备开始介绍hibernate 的开发指南 数据库系统也会使用H2
  • 文件操作 和 IO

    目录 编辑一 认识文件 1 文件路径 2 其它知识 二 Java 中操作文件 三 文件内容的读写 1 Reader 2 InputStream 3 输出 一 认识文件 文件是在硬盘上存储数据的一种方式 操作系统帮我们把硬盘的一些细节都封装起
  • java中CompletableFuture异步编程详解以及实践案例

    文章目录 一 CompletableFuture的使用 1 创建CompletableFuture的方式 2 获得异步执行结果 3 对执行结果进行处理 4 对执行结果进行消费 5 异常处理 6 两组任务按顺序执行 7 两组任务谁快用谁 8
  • 详解JAVA远程debug

    目录 1 什么是远程debug 2 远程debug普通JAVA程序 环境 测试程序 程序启动指令 编译器配置 3 远程debug JAVA Web程序 4 远程debug spring boot程序 1 什么是远程debug 远程debug
  • RocketMQ基础概念

    目录 1 简介 2 架构 3 核心概念 1 简介 RocketMQ 是一款开源的分布式消息中间件 最初由阿里巴巴集团开发并开源 它旨在为分布式系统提供可靠 高性能 可扩展的消息通信能力 RocketMQ和RabbitMQ KAFKA一起并列
  • 网络原理详解(图文结合)

    目录 编辑一 应用层 1 请求和响应 2 通用的协议格式 1 xml 2 json 3 protobuffer 二 传输层 1 UDP 2 TCP 1 TCP 协议段格式 2 可靠传输的实现机制 确认应答机制 可靠性 超时重传机制 可靠性
  • JVM相关知识点

    目录 编辑一 JVM 内存区域划分 1 栈 2 堆 3 元数据区 方法区 二 JVM 类加载机制 1 类加载机制介绍 2 双亲委派模型 经典问题 三 JVM 垃圾回收机制 GC 1 了解 GC 2 GC 实际工作过程 1 找到垃圾 判定垃圾
  • Java EE 企业级应用 复习 Spring中Bean的管理

    Bean的实例化 什么是Bean的实例化 Spring容器自动地帮助我们生成对应的Bean对象 Bean的实例化方法 构造方法实例化 静态工厂实例化 实例工厂实例化 构造方法实例化 package com itheima public cl
  • Servlet学习——为什么在web容器中servlet对象只有一个?

    以下为本人个人观点 如有错误 望指出 不胜感激 简单来说就是为了节省内存 servlet的设计非常的巧妙 如果我们对每一个用户请求都生成一个对应servlet的对象 第一 由于web服务器的访问量比较大 意味着内存开销会很大 第二 要GC大
  • Netty4之编解码

    本文是基于Netty4 1 x 一般在使用Netty作为网络框架进行开发时 编解码框架是我们应该注意的一个重要部分 应用从网络层接收数据需要经过解码 Decode 将二进制的数据报转换从应用层的协议消息 这样才能被应用逻辑所识别 同样 客户
  • IDEA去除代码中的波浪线(黄色警告线)

    IDEA去除代码中的波浪线 黄色警告线 IDEA中为了减少一定量的重复代码 提醒开发人员注意 会在代码下面出现黄色警告线 但是有时候几行代码的重复没必要扔到一个统一的地方处理 这里还总是提醒 干扰视线 因此 这里根据个人习惯 还是关闭这个功
  • Vue.js怎么给文本域赋默认值,和获取输入的值

    Vue js怎么给文本域赋默认值 一般给文本域赋初值用于修改某个东西 需要获取默认值 可以用v model来完成
  • Spring Boot使用AOP实现拦截器

    Spring Boot 专栏 https blog csdn net dkbnull category 9278145 html Spring Cloud 专栏 https blog csdn net dkbnull category 92

随机推荐

  • 当你的sklearn用不了mean_absolute_percentage_error函数

    今天将一份写好的python机器学习程序换了个电脑跑的时候 出现了如下报错 ImportError cannot import name mean absolute percentage error from sklearn metrics
  • 解决K8s安装中节点初始化时 [kubelet-check] The HTTP call equal to ‘curl -sSL http://localhost:10248/healthz‘ 问题.

    问题描述 安装K8s时 在节点初始化过程中出现 kubelet check The HTTP call equal to curl sSL http localhost 10248 healthz failed with error Get
  • WINDOWS 10 设置WSL 2

    确保已安装 WSL 可以在此处找到相关说明 并且运行的是 Windows 10内部版本 18917或更高版本 可以通过在 PowerShell 中运行以下命令来执行此操作 PowerShell dism exe online enable
  • 分布式深度学习part1:神经网络的分布式训练

    这篇文章是关于神经网络分布式训练的三部系列文章中的第一篇 在第1部中 我们将了解如何通过GPU上的分布式计算显著地加速深度学习模型的训练 并讨论一些挑战并调查当前关于该主题的研究 我们还将考虑神经网络的分布式训练是否适用于特定用例 介绍 在
  • stm32关于通用定时器的周期、频率计算公式

    以下内容针对正点原子的定时器中断实验 定时器时基单元包含 计数器寄存器 TIMx CNT 预分频器寄存器 TIMx PSC 该寄存器用设置对时钟进行分频 然后提供给计数器 作为计数器的时钟 自动装载寄存器 TIMx ARR 定时器的时钟来源
  • 【适合小白】开发一个区块链应用

    前言 本篇教程是小编基于FISCO BCOS官网的教程撰写的 有不明白的地方也可以去官网上的教程看看 在开发区块链应用之前 首先得完成搭建第一个区块链应用 目的是为了搭建节点跟启动控制台 1 了解应用需求 区块链天然具有防篡改 可追溯等特性
  • MQTT协议学习

    MQTT协议是目前物联网最主要的协议 它的设计主要是运用于 低带宽 低网速 差网络环境能够保证数据的正常传输 MQTT协议基于TCP IP协议 运用订阅发布模式 解除应用之间的耦合关系 客户端与客户端之间只需要知道服务器位置 就可以传输数据
  • Github管理项目代码相关git命令

    1 Git global setup git config global user name username git config global user email user email 2 Create a new repositor
  • .classpath .project ch2.iml这三个文件如何理解?

    这三个文件通常出现在Java开发中使用的集成开发环境 IDE 项目中 如Eclipse或IntelliJ IDEA 它们在项目的组织和配置方面发挥着重要的作用 classpath 文件 classpath 是 Eclipse 项目的配置文件
  • Wireshark使用小心得

    Wireshark工作使用小结 基本概念 wireshark是个开源的好用软件 用来分析数据包 数据包 通常就是四层信息 物理层数据帧 数据链路层以太帧头部 网络层IP包头部 传输层TCP包头部 最后就是应用层信息 基础功能使用 打开软件界
  • 范数介绍及C++/OpenCV/Eigen的三种实现

    有时我们需要衡量一个向量的大小 在机器学习中 我们经常使用被称为范数 norm 的函数衡量向量大小 形式上 Lp范数定义如下 范数 包括Lp范数 是将向量映射到非负值的函数 直观上来说 向量x的范数衡量从原点到点x的距离 更严格地说 范数是
  • 失业的程序员(五):商战之前

    本系列前章 失业的程序员 一 二 三 四 一 关于裸奔 早几年出现了很多新名词 如裸婚 蜗居 蚁族 而像我们这种没背景 没后台 没资金的程序员创业那简直可以称为裸奔 创业是否成功的标准实在太多 不能只拿钱来衡量因为很多人会说你铜臭 不能只拿
  • MYSQL的存储过程

    存储过程 存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合 调用存储过程可以简化应用开发人员的很多工作 减少数据在数据库和应用服务器之间的传输 对于提高数据处理的效率是有好处的 存储过程思想上很简单 就是数据库 SQL 语言
  • IAR编译器问题的总结

    之前做项目都是用keil编译器比较多 也基本上用得很顺手 但是最近又开始用IAR编译器 结果这次真是被它折磨得快要崩溃 现在把问题总结如下 IAR编译器版本 IAR2 10 4 IAR编译器默认的优化设置一定要注意 这个是之前做的一个项目
  • Kotlin协程源码简单聊一聊,浅浅看看表层

    今日科技快讯 近日 经历了一次停办 两次规模严重缩水之后 2023年世界移动通信大会 MWC 终于再现往日盛况 有来自200多个国家和地区的2000多家厂商参加 并在此次展会上发布了最新的产品与科技 仅中国就有100余家厂商参展 每年的MW
  • 详解前端性能优化之原生JS实现图片懒加载效果(通过IntersectionObserver内置构造函数实现)

    相信你作为一名用户 使用一款app 在首次打开页面时卡顿超过3秒时就会有退出的想法 所以我们在日常开发中 通常需要使用一些手段实现对性能的优化 来使得页面加载更快 用户体验更好 这其中有许多方式 其中最常用的无非是按需加载了 今天就带大家重
  • 硬盘配置raid5时碰见unconfiguration bad问题记录

    环境 长城服务器 昆仑bios 问题描述 系统装了四个SSD盘 但在BIOS配置raid的 Driver Manager 驱动识别界面中四块硬盘中的三块都是坏的 显示unconfiguration bad 并且在后面的raid配置界面中识别
  • MES系统质量追溯功能,到底在追什么?

    今天我们就来分析一下生产企业的产品质量追溯问题 以及MES系统中产品追溯的应用 我们知道 生产质量管理是MES系统中十分重要的一部分 因为长期以来 车间质量管理部门希望车间的加工水平持续保持在最佳状态 对加工过程产生的质量问题能得到及时的发
  • 河北某日报移动端python数据采集 eds加密新闻内容

    写在最前面 此移动端采用EDS 的js加密 核心的js加密代码 贴在 个人爱好尝试破解 仅提供技术交流用 目标地址 抓取的详情页地址 var e 4Qjir8b019EIXH0FBzIJIuElne7uRYd6AB7qOIQg TdtJrw
  • Java日期计算溢出问题

    先看下面的代码 SimpleDateFormat fmt new SimpleDateFormat yyyy MM dd final Date beginDate fmt parse 2013 8 1 for int i 0 i lt 30