公元1000真的是闰年还是sun API的BUG

zoeg 2010-04-13 03:07:08

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
public class Test{
public static void main(String[] args) throws ParseException{
DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
GregorianCalendar gc=new GregorianCalendar(1000,1,29);
Date date=gc.getTime();
String sdate=dateFormat.format(date);
System.out.println(sdate);
}
}

1000-02-29这一天真的存在么?
按照闰年规则,1000年应该不是闰年,但是sun API却输出了这一天!!!
...全文
472 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
麦田捕手 2010-05-09
  • 打赏
  • 举报
回复
崇拜7楼高人啦,帮顶!
@井九 2010-05-09
  • 打赏
  • 举报
回复
if ((year & 3) != 0) {
return false;
}

SUN还真是细节不错啊。
mf0606 2010-05-09
  • 打赏
  • 举报
回复
不懂,对闰年这个问题很纠结……
longq121 2010-05-09
  • 打赏
  • 举报
回复
顶,确实不错,不过一些小的细节问题,不是我们知道的,SUN公司还是有自己的实力的。像这样的问题,如果LZ不说出来我可能一辈子都不知道,但我知道也对我帮助不大。
charles361 2010-05-08
  • 打赏
  • 举报
回复
你用数学算算不就知道了吗
ZHXDD 2010-05-08
  • 打赏
  • 举报
回复
(year%4==0&&year%100!=0)||year%400==0
欢乐极客 2010-04-23
  • 打赏
  • 举报
回复
七楼是正确的
wuzhenbao 2010-04-23
  • 打赏
  • 举报
回复
路过,学习
wjz748305545 2010-04-23
  • 打赏
  • 举报
回复
接分ing
zxcv991 2010-04-23
  • 打赏
  • 举报
回复
呵呵,太有才了
zfq642773391 2010-04-23
  • 打赏
  • 举报
回复
呵呵 顶个
fm2005 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 justlearn 的回复:]

再补充,GregorianCalendar 实现了格里高利历和儒略历,以1582年10月15号为区分
在1582年之前的采用儒略历(Julian)--闰年以4整除为标准,之后的用格里高利历(Gregorian)--闰年为被4整除,并且百年的能被400整除。
判断闰年源码:
Java code

public boolean isLeapYear(int year) {
i……
[/Quote]
正解
小_Y 2010-04-22
  • 打赏
  • 举报
回复
晕,
经典问题对经典回答。
专业。。。
TillPerfect 2010-04-13
  • 打赏
  • 举报
回复
四年一闰,百年不闰,四百年一大闰。
小学就是这样背的
luomf 2010-04-13
  • 打赏
  • 举报
回复
顶7楼
Helix333 2010-04-13
  • 打赏
  • 举报
回复
楼上正解
justlearn 2010-04-13
  • 打赏
  • 举报
回复
再补充,GregorianCalendar 实现了格里高利历和儒略历,以1582年10月15号为区分
在1582年之前的采用儒略历(Julian)--闰年以4整除为标准,之后的用格里高利历(Gregorian)--闰年为被4整除,并且百年的能被400整除。
判断闰年源码:

public boolean isLeapYear(int year) {
if ((year & 3) != 0) {
return false;
}

if (year > gregorianCutoverYear) {
return (year%100 != 0) || (year%400 == 0); // Gregorian
}
if (year < gregorianCutoverYearJulian) {
return true; // Julian
}
boolean gregorian;
// If the given year is the Gregorian cutover year, we need to
// determine which calendar system to be applied to February in the year.
if (gregorianCutoverYear == gregorianCutoverYearJulian) {
BaseCalendar.Date d = getCalendarDate(gregorianCutoverDate); // Gregorian
gregorian = d.getMonth() < BaseCalendar.MARCH;
} else {
gregorian = year == gregorianCutoverYear;
}
return gregorian ? (year%100 != 0) || (year%400 == 0) : true;
}
justlearn 2010-04-13
  • 打赏
  • 举报
回复
我从文档给你找到答案了
GregorianCalendar 实现的是儒略历。格里高利历和儒略历之间的唯一区别就是闰年规则。儒略历指定每 4 年就为闰年,而格里高利历则忽略不能被 400 整除的世纪年。

文档原文:
The only difference between the Gregorian and the Julian calendar is the leap year rule. The Julian calendar specifies leap years every four years, whereas the Gregorian calendar omits century years which are not divisible by 400.
sotom 2010-04-13
  • 打赏
  • 举报
回复
到Google 翻翻万年历去。看看
justlearn 2010-04-13
  • 打赏
  • 举报
回复
漏算了,貌似整百的还要被400整除
加载更多回复(10)
已经博主授权,源码转载自 https://pan.quark.cn/s/a4b39357ea24 ### TDS 2014示波器使用手册知识点总结 #### 一、TDS 1000B 和 TDS 2000B 系列数字存储示波器概述 - **产品系列**: TDS 1000B 和 TDS 2000B 是由 Tektronix 公司所研发并推出的数字存储示波器产品线。 - **功能定位**: 主要致力于为电子工程师以及研发人员提供具备高性能与高精度的信号测量设备。 - **应用领域**: 此类设备被普遍应用于教育机构、研发实验室以及工业生产过程中的测试环节。 #### 二、TDS 2014示波器基本操作与使用 - **开机与基本设置**: - 在启动设备时,必须确保仪器已经正确接地。 - 在使用之前,需要根据观察需求设定合适的屏幕亮度、对比度等显示参数。 - **通道选择与配置**: - 可以通过触摸显示屏或设备前面板上的按钮来选定需要进行的测量通道。 - 可依据实际需求来调整垂直灵敏度、水平时间基准等设置项。 - **触发设置**: - 触发模式包括自动、常态、单次等多种选择。 - 触发源与阈值设定涉及确定触发信号的具体来源及其电压阈值水平。 - **测量与分析功能**: - 提供多种自动测量功能选项,涵盖电压峰峰值、频率等参数的测量。 - 支持对波形进行数学运算,例如执行两个波形的相加或相减操作。 #### 三、TDS 2014示波器高级特性 - **波形捕获率**: - 波形捕获率越高,意味着在检测偶发事件方面的能力越强。 - **波形存储与回放**: - 支持将波形数据存储到内部存储单元或外部存储设备中。 - 用户能够随时调取先前保存的波形数据,以进行深入分析。 - *...
内容概要:本文聚焦2026年高教社杯全国大学生数学建模竞赛B题“无线电干扰源的快速自动定位与清除”,同时整合了多个数学建模与工程技术仿真研究资源,涵盖SEM广告投放策略优化、无人机协同路径规划、电力系统无功优化、微电网调度、负荷预测、电动汽车响应率建模等多个领域。其中重点详述了SEM广告投放策略的系统性建模,构建了从问题诊断、关键词分类、预算优化到不确定性环境下鲁棒决策的完整框架。提出基于成本—效益二维归一化的五类关键词划分方法(黄金词、重点词、潜力词、问题词、无效词),并建立了0-1整数规划与CVaR鲁棒优化模型,实现注册转化最大化与风险控制的平衡。文档还汇集了大量基于Matlab/Simulink的仿真资源,涉及智能优化算法、机器学习、信号处理、路径规划等方向,并配套提供代码与论文支持,形成跨学科的技术资源共享平台。; 适合人群:具备一定数据分析与建模基础,正在准备数学建模竞赛或从事科研工作的本科生、研究生及工程技术人员。; 使用场景及目标:①应用于数学建模竞赛备赛,学习多目标优化、分类模型、鲁棒决策等建模范式;②开展广告投放、电力调度、路径规划等领域的科研项目时借鉴模型构建与算法实现方法;③通过提供的Matlab/Python代码快速复现经典或前沿研究成果,提升科研效率与实践能力。; 阅读建议:此资源集合了多个独立研究主题,建议读者根据自身研究方向选择性阅读,重点关注模型构建逻辑与算法实现细节,并结合所提供的Matlab/Python代码进行实践验证,以加深理解与应用能力。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧