html闰年计算方法,闰年的计算方法及程序算法的实现

html闰年计算方法,闰年的计算方法及程序算法的实现由于这个问题找的人还是非常多 所以今天我把它从我原来的 blog 上转过来 希望对大家有所帮助 这篇文章是我去年的时候写的 那时候还没用 PHP 所以闰年的计算方法没有 PHP 的 今天在这里补充上这段代码 y 代表年份 第一种算法 if y 400 0 y 4 0 amp amp y 100 0 echo 是 else echo 不是 第二种算法 if y 4 0 amp

由于这个问题找的人还是非常多,所以今天我把它从我原来的blog上转过来,希望对大家有所帮助。

这篇文章是我去年的时候写的,那时候还没用PHP,所以闰年的计算方法没有PHP的,今天在这里补充上这段代码,$y代表年份:

第一种算法:

if

(

$y

%

400

==

0

||

(

$y

%

4

==

0

&&

$y

%

100

!=

0

)){

echo

;

}

else

{

echo

不是

;

}

第二种算法:

if

(

$y

%

4

==

0

&&

(

$y

%

400

==

0

||

$y

%

100

!=

0

)){

echo

;

}

else

{

echo

不是

;

}

重看自己写的文章,发现自己总结的两条判断条件有点模糊,可能不看程序还真看不出来,那我就再总结一下。

判断某一年是不是闰年的条件是:能被4整除且不可以被100整除,或者能被400整除。

以下是原来的文章

闰年的计算方法,一个严重的问题!

yoyo 发表于 2006-2-13 11:22:27今天在看JAVA的一个计算闰年的程序的时候,看到下面的一句话:判断闰年的条件是“能被4整除且不能被100整除,或者能被100 整除,同时也能被400整除”。看到这个判断的方法后我懵了,主要原因是它和我记忆中的判断方法完全不一样,我记忆中的方法是“能被4整除即可”,这是我 小学时候学的,而且我已经确认,我们那个时候一起上学的都是这么被教的,更让我感到惊讶的是很多其他地方的人也这么认为,可以看出这是一个普遍现象,我感 觉可能是教科书错了或者是教科书上没有讲计算方法。如果是教科书上也这么说的话,那可是个大问题了。对于现在的很多人并没有意识到自己的计算方法是错误 的,因为2000年恰好是闰年,并且如果不是刻意的去准确的算哪一年是不是闰年并且和准确的万年历做对比也很难碰到算错的情况。因为这些特殊的年份比较 少,你可以看1900年和2100年就不是闰年。这是一个说小就小,说大就大的问题,不经常和日期时间打交道的人就认为也无所谓,毕竟有生之年也碰不到这 个错误了(2100不是闰年)。但是经常和时间打交道的人就会碰到这个问题了,而且可能会出现大错误。而且对于我这种经常写程序的人也是要碰到这个问题 的。对于这个简单的问题,到现在才纠正,我感到很遗憾……最后总结一下计算的条件:

1.能被4整除且不可以被100整除;

2.能被400整除。

满足任何一个条件都可以。

[经过我在各大论坛问帖子调查,发现有一大部分人是把“能被4整除”当作判断条件的,此调查说明这个问题的普遍性]今天在CSDN上关于这个问题的讨论小有收获,有人给出的算法是0==y%4 && (0!=y%100 || 0==y%400),我不知道这个表达式对不对,但是我知道他的逻辑是对的。

现在我用VBScript写出两种算法的程序:

第一种算法:

if y mod 400 = 0 or (y mod 4=0 and y mod 100<>0) then

msgbox “是”

else

msgbox “不是”

end if

第二种算法:

if y mod 4 = 0 and (y mod 400 = 0 or y mod 100 <> 0) then

msgbox “是”

else

msgbox “不是”

end if

感觉第二种算法更锻炼算法。

——————————————————————————–

最近在学习JAVA,忽然又看到了这个问题,这里补充上JAVA的代码:

import

java

.

io

.*;

public

class

AppCharInOut

{

public

static

void

main

(

String

[]

args

)

{

String

s

=

“”

;

int

n

=

0

;

try

{

BufferedReader

in

=

new

BufferedReader

(

new

InputStreamReader

(

System

.

in

))

;

System

.

out

.

print

(

请输入一个年份:

)

;

s

=

in

.

readLine

()

;

n

=

Integer

.

parseInt

(

s

)

;

}

catch

(

IOException

e

){}

if

((

n

%

4

==

0

&&

n

%

100

!=

0

)

||

(

n

%

400

==

0

))

//判断闰年的条件

{

System

.

out

.

println

(

s

+

年是闰年

)

;

}

else

{

System

.

out

.

println

(

s

+

年不是闰年

)

;

}

}

}

以下是原文章的评论内容

Re:闰年的计算方法,一个严重的问题!

yoyo发表评论于2006-7-1 20:48:51以下引用aaa(游客)在2006-6-18 10:39:22发表的评论:今年是2006年,闰7月,是闰年吗?但是2006不能被4或400整除,为什么?这里说的闰年指的是公历闰年,即二月是不 是29天或者说一年是不是366天,而不是说的农历的闰年。Re:闰年的计算方法,一个严重的问题!

aaa(游客)发表评论于2006-6-18 10:39:22今年是2006年,闰7月,是闰年吗?但是2006不能被4或400整除,为什么?Re:闰年的计算方法,一个严重的问题!

梅子(游客)发表评论于2006-6-17 20:29:45

我终于从这儿学到了公历与农历对应的时间。那就是19年为一周期。谢谢。

Re:闰年的计算方法,一个严重的问题!

yoyo(游客)发表评论于2006-2-14 10:39:01

借用从blueidea上的回复供浏览的朋友参考:

在公历(格里历)纪年中,有闰日的年份叫闰年,一般年份365天,闰年为366天。由于地球绕太阳运行周期为365天5小时48分46秒(合 365.24219天)即一回归年,公历把一年定为365天。所余下的时间约为四年累计一天,加在二月里,所以平常年份每年365天,二月为28天,闰年 为366天,二月为29天。因此,每400年中有97个闰年,闰年在2月末增加一天,闰年366天。闰年的计算方法:公元纪年的年数可以被四整除,即为闰 年;被100整除而不能被400整除为平年;被100整除也可被400整除的为闰年。如2000年是闰年,而1900年不是。

下面是一个计算公历闰年的例子:

s = InputBox(”请输入年份:”)

n = Val(s)

If n Mod 400 = 0 Or (n Mod 4 = 0 And n Mod 100 <> 0) Then

MsgBox s + “是闰年!”

End If

中国旧历农历纪年中,有闰月的一年称为闰年。一般年份为12个月,354或355天,闰年则为13个月,383或384天。农历作为阴阳历的一种, 每月的天数依照月亏而定,一年的时间以12个月为基准;为了合上地球围绕太阳运行周期即回归年,每隔2到4年,增加一个月,增加的这个月为闰月,因此农历 的闰年为 13个月。

农历没有第十三月的称谓,闰月按照历法规则,排放在从二月到十月的过后重复同一个月,重复的这个月为闰月,如四月过后的闰月称为闰四月。

农历闰年闰月的推算,3年一闰,5年二闰,19年七闰;农历基本上19年为一周期对应于公历同一时间。如公历的2001年5月27日、1982年5月27日和1963年5月27日这个日子,都是闰四月初五。

公历1982年至2042年与农历闰年闰月对照表

公历所在月份 闰月(初一日) 干支年

1982年5月23日 闰四月小 壬戊年

1984年11月23日 闰十月大 甲子年

1987年7月26日 闰六月大 丁卯年

1990年6月23日 闰五月大 庚午年

1993年4月22日 闰三月大 癸酉年

1995年9月25日 闰八月大 乙亥年

1998年6月24日 闰五月小 戊寅年

2001年5月23日 闰四月大 辛巳年

2004年3月21日 闰二月大 甲申年

2006年8月24日 闰七月大 丙戊年

2009年6月23日 闰五月大 己丑年

2012年5月21日 闰四月小 壬辰年

2014年10月24日 闰九月小 甲午年

2017年7月23日 闰六月大 丁酉年

2020年5月23日 闰四月小 庚子年

2023年3月22日 闰二月大 癸卯年

2025年7月25日 闰六月大 己巳年

2028年6月23日 闰五月大 戊申年

2031年4月22日 闰三月大 辛亥年

2033年8月25日 闰七月大 癸丑年

2036年7月23日 闰六月小 丙辰年

2039年6月22日 闰五月大 己未年

2042年3月22日 闰二月大 壬戊年

//2008-12-03 dahuilangc

//根据上面的文章自己实现了个c++的

BOOL LeapYear(int nYear)

{

return (nYear % 4 == 0) ^ (nYear % 400 == 0) ^ (nYear % 100 == 0);

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216756.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午11:08
下一篇 2026年3月18日 上午11:08


相关推荐

  • web 前端框架_web后端框架排行

    web 前端框架_web后端框架排行在做web开发的时候难免遇到一个问题,那就是,选择什么样的框架。下面把前端的框架简单的列一下。1、flexApache基金会今天发布了Flex4.8版本,这是Adobe将Flex捐献给Apach

    2022年8月2日
    8
  • 应用var模型时的15个注意点_应用相对数时的注意事项

    应用var模型时的15个注意点_应用相对数时的注意事项转载自:http://bbs.pinggu.org/forum.php?mod=viewthread&tid=3219921&ctid=2272向量自回归(VAR,VectorAutoregression)常用于预测相互联系的时间序列系统以及分析随机扰动对变量系统的动态影响。VAR方法通过把系统中每一个内生变量,作为系统中所有内生变量的滞后值的函数来构造模型,从而回避了结构化模型的要求。E

    2025年6月15日
    5
  • Unity零基础到入门☀️| 万字教程 讲解Unity中的数据存储 PlayerPrefs、XML、JSON【建议收藏】「建议收藏」

    Unity零基础到入门☀️| 万字教程 讲解Unity中的数据存储 PlayerPrefs、XML、JSON【建议收藏】「建议收藏」本文章是Unity零基础到入门专栏的系列文章。适合对Unity3D引擎感兴趣的小伙伴学习,偏向于新手学习!本篇文章就来介绍一下Unity中三种基本的数据存储方式:PlayerPrefs、XML、JSON

    2022年7月16日
    16
  • java json序列化日期类型[通俗易懂]

    java json序列化日期类型[通俗易懂]做接口开发时经常需要给前端返回日期数据,比如生日、创建时间、更新时间等。我们一般是建一个bean,将定义所需要的字段,并和数据库的字段相对应。虽然数据库的字段是日期类型的,但bean的字段定义在String就行了,看下面的测试代码:packagecom.bs.test;importjava.text.SimpleDateFormat;importjava.util.Date;importc

    2025年6月9日
    5
  • Java50个关键字总结「建议收藏」

    Java50个关键字总结「建议收藏」作业一:Java基础知识复习一、关键字总结1.abstract修饰类:abstract修饰类,这个类就是抽象类,抽象类中可以有非抽象变量和成员变量,也可以有普通方法、构造方法。但是不能实例化,只能被子类继承。如果子类不是抽象类,则必须重写父类的抽象方法。publicabstractclassAbstractList&lt;E&gt;e…

    2022年7月8日
    16
  • VGG网络模型详解

    VGG网络模型详解如今深度学习发展火热 但很多优秀的文章都是基于经典文章 经典文章中的一句一词都值得推敲和分析 此外 深度学习虽然一直被人诟病缺乏足够令人信服的理论 但不代表我们不能感性分析理解 下面我们将对 2014 年夺得 ImageNet 的定位第一和分类第二的 VGG 网络进行分析 在此过程中更多的是对这篇经典文章的感性分析 希望和大家共同交流产生共鸣 如果有理解不到位的也真诚期待指出错误 Simonyan Ka

    2026年3月20日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号