闰年导致的哪些 Bug

每次闰年对程序员们都是一个挑战,平时运行好好的系统,在 02-29 这一天,好像就会有各种毛病。

虽然,提前一天,领导们都会提前给下面打招呼。但是,不可避免的,今天公司因为闰年还是有一些小故障。

就连大家熟知的一些大公司,也不可避免的因为闰年导致大大小小的故障。

闰年导致的哪些 Bug

1、2 月 29 日下午,有消息称禾赛科技激光雷达存在固件 bug,致使凡是用了禾赛激光雷达的车,自动驾驶功能全部歇菜。

2、 OpenAI ChatGPT 3.5 认为「2024-02-29」不是有效日期。由于此问题,至少有一名 OpenAI API 用户在自己的应用程序中遇到了故障。

3、新西兰多处加油站遭遇自助支付终端问题。原因是该系统未处理 2 月 29 日这一日期。

4、哥伦比亚最大的航空公司打印的机票有误。阿维安卡航空公司 (Avianca) 打印的机票日期为 3/1,而不是 2/29,因为他们的系统没有考虑闰日。

5、印度新发布的智能手表无法显示正确的日期。Fastrack FS1 是印度公司 Fatrack 最近发布的一款智能手表。FS1 型号于 2023 年 3 月发布。有多份报告称该款手表在 2 月 28 日晚 11:59 后不再继续跳动。

Java 程序员怎么防止这个 Bug?

使用 Java 自带日期类

使用标准的日期时间库:Java 8 引入了新的日期时间 API(java.time 包),包括 LocalDate、LocalDateTime 等类,它们提供了工具来处理闰年问题,并且遵循 ISO 标准。使用这些类来进行日期操作可以有效避免闰年问题。

LocalDate lastDay = LocalDate.of(2024, 2, 28);
LocalDate localDate = lastDay.plusDays(1);
System.out.println(localDate); // 2024-2-29

使用 Java 工具函数判断润年

使用闰年判断函数:Java 中提供了判断是否为闰年的函数。通过使用 java.time.Year 类的 isLeap 方法来判断某年是否是闰年,这样可以确保闰年的判断是准确的。

int year = 2024;
if (Year.of(year).isLeap()) {// 是闰年的处理逻辑
} else {// 不是闰年的处理逻辑
}

使用第三方库,如 Joda-Time

有许多成熟的第三方日期时间库,如Joda-Time,它们提供了丰富的日期时间处理功能,并且已经处理了闰年等复杂情况。

// 创建一个 LocalDate 对象表示当前日期
LocalDate today = new LocalDate(2024, 2, 28);// 计算明天的日期
LocalDate tomorrow = today.plusDays(1);// 输出结果
System.out.println("今天的日期: " + today); //今天的日期: 2024-02-28
System.out.println("明天的日期: " + tomorrow); //明天的日期: 2024-02-29

虽然说所有的代码不可能一次性写好,完全没有 bug。但是,扎实的基础、丰富的编程经验、充分的测试能在很大程度上避免大的 bug 导致系统故障。

AI 时代,我们也有更多的方式、更有效的方式来 cr 我们的代码,减少 bug 的出现。

祝程序猿们永无 bug !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/270177.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BUUCTF-Misc-百里挑一

题目链接:BUUCTF在线评测 (buuoj.cn) 下载附件打开是一个流量包文件: 全是在传图片时候的流量,先把图片保存出来文件–>导出对象–>HTTP–>保存到一个文件夹 然后使用kali下的exiftool找到了一半flag exiftool *|grep flag 另外一半…

vulhub中ThinkPHP5 5.0.23 远程代码执行漏洞复现

ThinkPHP是一款运用极广的PHP开发框架。其5.0.23以前的版本中,获取method的方法中没有正确处理方法名,导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞。 环境启动后,访问http://your-ip:8080即可看到…

Linux系统:内核参数调优

目录 1、/proc目录 2、sysctl命令 3.1 控制源路由验证 3.2 控制内核的系统请求调试功能 3.3 控制核心转储是否将PID附加到核心文件名 3.4 控制TCP同步cookie的使用 3.5 在网桥上禁用netfilter 3.6 控制消息队列的默认最大大小 3.7 调试TCP内核参数 3.8 调试套…

(学习日记)2024.03.06:UCOSIII第八节:空闲任务+阻塞延时+main函数修改

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

【高效开发工具系列】vimdiff简介与使用

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

LeetCode102.二叉树的层序遍历

题目 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]]输入:root [1] 输出&am…

python基础——基础语法

文章目录 一、基础知识1、字面量2、常用值类型3、注释4、输入输出5、数据类型转换6、其他 二、字符串拓展1、字符串定义2、字符串拼接3、字符串格式化4、格式化精度控制 三、条件/循环语句1、if2、while3、for循环 四、函数1、函数定义2、函数说明文档3、global关键字 五、数据…

在亚马逊云科技上开启您的多机多卡分布式训练之旅

随着机器学习模型规模的扩大和数据量的增加,单个设备的计算能力和内存容量逐渐成为瓶颈。这导致训练过程变得缓慢且耗时长,限制了模型的进一步发展和改进。为了解决这个问题,分布式训练应运而生。它利用多个计算资源并行地执行计算任务&#…

二维码门楼牌管理系统应用场景:紧急服务部门的新助手

文章目录 前言一、二维码门楼牌管理系统的引入二、紧急服务部门的应用场景三、与紧急服务部门的联动机制四、技术挑战与未来发展 前言 在数字化时代,二维码门楼牌管理系统不仅为城市管理带来了便捷,更为紧急服务部门开辟了新的救援通道。本文将探讨二维…

Claude3荣登榜首,亚马逊云科技为您提供先行体验!

Claude3荣登榜首,亚马逊云科技为您提供先行体验! 个人简介前言抢先体验关于Amazon BedrockAmazon Bedrock 的功能 Claude3体验教程登录Amazon Bedrock试用体验管理权限详细操作步骤1.提交应用场景详细信息2.请求模型的访问权限3.请求成功,开始…

【Docker】技术架构演变

【Docker】技术架构演变 目录 【Docker】技术架构演变架构中的概念架构演进单机架构相关软件 应用数据分离架构应用服务集群架构相关软件 读写分离/主从分离架构相关软件 引入缓存——冷热分离架构相关软件 垂直分库(分布式数据库架构)相关软件 业务拆分…

第一节 JDBC是什么?

JDBC代表Java数据库连接(Java Database Connectivity),它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API,换句话说:JDBC是用于在Java语言编程中与数据库连接的API。 JDBC库包括通常与数据库使用相关,如下面提到的…

自学Java的第二十一天(在学校版)

一,每日收获 类与对象 1.看一个养猫猫问题 2.使用现有技术解决 Object01.java 3.类与对象的关系示意图 4.快速入门 5.类和对象的区别和联系 6.对象在内存中存在形式 7.属性/成员变量/字段 8.如何创建对象 9.如何访问属性 二,新名词与小技巧 三…

学不动系列-eslint

ESLint 介绍在最简单的项目使用eslint,包括eslint的vscode插件的使用,自动化格式代码,自动化修复代码,和webpack,vite的配合使用 单独使用 第一步:构建一个空项目 npm init -y 在根目录新建文件./src/app.js&#…

Spring Cloud Gateway核心之Predicate

路由 Predicate 工厂 Spring Cloud Gateway 将路由作为 Spring WebFluxHandlerMapping基础设施的一部分进行匹配。Spring Cloud Gateway 包含许多内置的路由Predicate 工厂。所有这些谓词都匹配 HTTP 请求的不同属性。多个 Route Predicate Factory 可以组合,并通过…

[项目设计] 从零实现的高并发内存池(四)

🌈 博客个人主页:Chris在Coding 🎥 本文所属专栏:[高并发内存池] ❤️ 前置学习专栏:[Linux学习] ⏰ 我们仍在旅途 ​ 目录 6.内存回收 6.1 ThreadCache回收内存 6.2 CentralCache回收内存 Rele…

Doris实战——金融壹账通指标中台的应用实践

目录 前言 一、业务痛点 二、早期架构挑战 三、架构升级 四、一体化指标数据平台 4.1 构建指标体系 4.2 构建指标平台功能 五、Doris指标应用实践 六、未来规划 原文大佬的这篇指标中台的应用实践有借鉴意义,这里摘抄下来用作学习和知识沉淀。 前言 在搭建…

20240305-2-海量数据处理常用技术概述

海量数据处理常用技术概述 如今互联网产生的数据量已经达到PB级别,如何在数据量不断增大的情况下,依然保证快速的检索或者更新数据,是我们面临的问题。 所谓海量数据处理,是指基于海量数据的存储、处理和操作等。因为数据量太大无…

【机器人最短路径规划问题(栅格地图)】基于遗传算法求解

代码获取方式:QQ:491052175 或者 私聊博主获取 基于遗传算法求解机器人最短路径规划问题(栅格地图)的仿真结果 仿真结果: 路径长度的变化曲线: 遗传算法优化后的机器人避障路径:

裸机编程的几种模式、架构、缺陷

目录 裸机编程模式/架构 1:初始化代码的编写 裸机编程模式/架构 2:轮询模式 裸机编程模式/架构 3:轮询加中断执行模式 裸机编程模式/架构 4:中断定时器主循环的前后台架构 裸机编程模式/架构 5:前后台 状态机架构…