java和javascript日期校验和闰年问题分析和解决方式
1.闰年的介绍
地球绕太阳执行周期为365天5小时48分46秒(合365.24219天)即一回归年。公历的平年仅仅有365日,比回归年短约0.2422 日,所余下的时间约为四年累计一天。故四年于2月加1天,使当年的历年长度为366日。这一年就为闰年。
现行公历中每400年有97个闰年。依照每四年一个闰年计算。平均每年就要多算出0.0078天,这样经过四百年就会多算出大约3天来,因此,每四百年中要降低三个闰年。所以规定。公历年份是整百数的。必须是400的倍数的才是闰年,不是400的倍数的,尽管是4的倍数,也是平年,这就是通常所说的:四年一闰。百年不闰,四百年再闰。
比如。2000年是闰年。1900年则是平年。
因为地球的自转速度逐渐减少,而公转速度则相对更加稳定,所以上述的系统经过更长的周期也会发生微小的误差。在长远的将来,针对闰年的微小调整应该不是由预定的系统决定。而是随时不定性的。
既然是这样,在系统开发过程中。是否须要推断几百年后的事情呢?没有太大必要,假设一个系统可以使用几百年。也该寿终正寝了。
2.怎样进行日期校验
系统中常有三种做法,第一种是使用语言自身的日期对象特性。另外一种就是将日期转换为某一个特定的格式,然后拆分出来年月日。推断年份、月份、日期。
两种方法在javascript和java中都适用,另外一种方法不推荐。
第二种,使用正則表達式来校验,正則表達式通常很复杂。难以理解。这样的方法对100倍数闰年校验存在隐患。
2.1 使用日期对象校验
2.1.1.1Javascript的日期对象
将指定的格式日期字符串转换成标准的格式(比方yyyy-mm-dd),对年月日进行拆解。通过春节月日參数生产Date(年,月。日)对象。再得到Date对象的年月日。和拆解之后的年月日进行比較,看结果是否一致。
通过Date(年,月,日)创建对象,会自己主动转换非法日期。比方:传入1月和32号的日期,会自己主动升级为2月1日,比較年月日不一致说明日期非法。
Date对象的构造方法,月份是从0開始的,0表示1月。參考下表:
代码演示样例:

2.1.1.2Java的日期对象
Java中提供了丰富的类,能够直接校验日期。假设不能使用java的类库校验自己定义的一些日期。也能够自己编写规则进行校验,參考javascript的方法。
很多其它參考java.util.Date的API

代码演示样例:

2.2 拆分年月日校验
山寨做法。不推荐使用。

2.3 正則表達式校验
以下这个是摘录自某系统中的正則表達式,格式化之后也非常难理解。
这个正則表達式仅仅考虑年数是4的倍数的年份,对于100的倍数的则存在问题。比方1900年、2100年就不是闰年,也会校验通过。不能在系统中使用。
支持的格式为:
1)0012/02/29
2)2012/2/29
3)2012 02 29
4)2012 2 01
5)2100 2 1

3.对日期自己主动升级的说明
通过Date(年。月。日)创建对象。会自己主动转换非法日期。比方:传入1月和32号的日期,会自己主动升级为2月1日,比較年月日不一致说明日期非法。
3.1Javascript的转换
代码,參考Javascript的Date API

结果:

3.2Java的转换
代码,參考Java的Date对象API

结果:
2100-3-2
4.开发注意事项
1.系统对于标准的日期输入。尽量使用日期控件,仅仅能选择。不能改动;对于能够手工输入和改动的日期,须要添加校验。
2.有些业务规则跟闰年有关,开发过程中一定要跟业务确认清楚。比方:有效期天数。碰到闰年的情况。每年的天数可能就有一天的区别。
java和javascript日期校验和闰年问题分析和解决方式的更多相关文章
- java和javascript日期详解
** java,js日期转换:** <Excerpt in index | 首页摘要> java的各种日期转换 <The rest of contents | 余下全文> 日期 ...
- 分享下今天研究的流量上限DDos攻击分析和解决方式
分享下今天研究的流量上限DDos攻击分析和解决方式 常常听到或者碰到某个站点被攻击.一般都是流量攻击.今天自己写了个程序測下相关的上限,程序仅仅简单做了个get html操作(不包括图片等资源文件). ...
- Java Web乱码分析及解决方式(一)——GET请求乱码
引言: 在进行Web開始时.乱码是我们最常常遇到也是最主要的问题.有经验的程序员非常easy能解决,刚開始学习的人则easy被泥潭困住. 并且非常多时候.我们即使攻克了乱码问题也是不明就里.往 ...
- Windows服务器java.exe占用CPU过高问题分析及解决
最近在测试一个用java语言实现的数据采集接口时发现,接口一旦运行起来,CPU利用率瞬间飙升到85%-95%,一旦停止就恢复到40%以下,这让我不得不面对以前从未关注过的程序性能问题. 在硬着头皮查找 ...
- Linux转发性能评估与优化-转发瓶颈分析与解决方式(补遗)
补遗 关于网络接收的软中断负载均衡,已经有了成熟的方案,可是该方案并不特别适合数据包转发,它对server的小包处理非常好.这就是RPS.我针对RPS做了一个patch.提升了其转发效率. 下面是我转 ...
- Linux转发性能评估与优化(转发瓶颈分析与解决方式)
线速问题 非常多人对这个线速概念存在误解. 觉得所谓线速能力就是路由器/交换机就像一根网线一样. 而这,是不可能的.应该考虑到的一个概念就是延迟. 数据包进入路由器或者交换机,存在一个核心延迟操作,这 ...
- Android ListView异步载入图片乱序问题,原因分析及解决方式
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/45586553 在Android全部系统自带的控件其中,ListView这个控件算是 ...
- 【javascript】浮点数运算问题分析及解决方法
问题: 在用 js 进行小数四则运算时发现了一个重大问题,比如:0.7 * 0.8 = 0.5599999999999999 分析: 在 js 中只有一种数字类型 Number,而且在 js 中所有的 ...
- aliyun oss 文件上传 java.net.SocketTimeoutException Read timed out 问题分析及解决
upload ClientException Read timed out com.aliyun.openservices.ClientException: Read timed out ...
随机推荐
- Android View体系(十)自定义组合控件
相关文章 Android View体系(一)视图坐标系 Android View体系(二)实现View滑动的六种方法 Android View体系(三)属性动画 Android View体系(四)从源 ...
- Gym - 100338E Numbers 贪心
Gym - 100338E 题意:给你n,k问在1-n中能整出k的字典序最小的数.范围1018 思路:比较简单的贪心了,枚举10的幂m,然后加上k-m%k, 更新答案就可以了,数据一定要用unsign ...
- 开源计算机集群监控Ganglia应用视频
Ganglia源于Berkeley发起的一个开源集群监视项目,设计用于监测数上千节点的计算机集群.它包含gmond.gmetad以及一个Web前端.可以用来监控系统处理器 .内存.硬盘 I/O.网络流 ...
- excel操作小技巧
excel拼接sql语句时,时间格式问题 问题:若直接插入时间的单元格 :="insert into t_entity_car (create_time,name,age) value (' ...
- 洛谷 P2355 团体操队形
P2355 团体操队形 题目背景 X中学要团体操比赛了哦.队形该怎样排呢? 题目描述 有n(n<=100000)个团体操队员编号分别为1~n,参加运动会开幕式的团体操表演.其基本队形(分连续队形 ...
- RHEL7.1安装VNC
1.安装包 yum install vnc* -y 2.创建password vncserver 3.创建參数文件 [root@single ~]# cp /lib/systemd/system/vn ...
- java之 ------ 几种常见的简单设计模式
前言: 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.用于解决特定环境下.反复出现的特定问题的解决方式.使用设计模式是为了可重用代码.让代 ...
- SQL 增删改查(具体)
一.增:有3种方法 1.使用insert插入单行数据: insert [into] <表名> [列名] values <列值> insert into Strdents (na ...
- ajax ---- json 和 xml 区别
2.XML和JSON优缺点 (1).XML的优缺点<1>.XML的优点 A.格式统一,符合标准: B.容易与其他系统进行远程交互,数据共享比较方便.<2>.XML的缺点 A.X ...
- POJ 2455 二分+网络流
题意: 思路: 莫名其妙TLE 啊woc我A了一坨题的网络流模板有问题 !!!! 在常数上会慢 (一个等于号 啊啊啊) 改了所有网络流有关的文章- .... //By SiriusRen #inclu ...