Date 对象用于处理。
创建 Date 对象的语法:代码如下 | 复制代码 |
var myDate=new Date() |
Date 对象会自动把当前日期和时间保存为其初始值。
参数形式有以下5种:代码如下 | 复制代码 |
new Date("month dd,yyyy hh:mm:ss"); new Date("month dd,yyyy");new Date(yyyy,mth,dd,hh,mm,ss);new Date(yyyy,mth,dd);new Date(ms); |
注意最后一种形式,参数表示的是需要创建的时间和GMT时间1970年1月1日之间相差的毫秒数。各种函数的含义如下:
month:用英文表示月份名称,从January到December
mth:用整数表示月份,从(1月)到11(12月)
dd:表示一个月中的第几天,从1到31
yyyy:四位数表示的年份
hh:小时数,从0(午夜)到23(晚11点)
mm:分钟数,从0到59的整数
ss:秒数,从0到59的整数
ms:毫秒数,为大于等于0的整数
如:
代码如下 | 复制代码 |
new Date("January 12,2006 22:19:35"); new Date("January 12,2006"); new Date(2006,0,12,22,19,35); new Date(2006,0,12); new Date(1137075575000); |
下面整理了一些日期正则达式
简单的正则 如 : d{4}-d{2}-d{2}但是实际情况却不是那么简单,,要考虑,有效性和闰年等问题…..对于日期的有效范围,不同的应用场景会有所不同。MSDN中定义的DateTime对象的有效范围是:0001-01-01 00:00:00到9999-12-31 23:59:59。
UNIX时间戳的0按照ISO 8601规范为 :1970-01-01T00:00:00Z。
先考虑与年份无关的前三条规则,年份可统一写作
(?!0000)[0-9]{4}
下面仅考虑月和日的正则
1. 包括平年在内的所有年份的月份都包含1-28日
代码如下 | 复制代码 |
(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8]) |
2. 包括平年在内的所有年份除2月外都包含29和30日
代码如下 | 复制代码 |
(0[13-9]|1[0-2])-(29|30) |
3. 包括平年在内的所有年份1、3、5、7、8、10、12月都包含31日
代码如下 | 复制代码 |
(0[13578]|1[02])-31) |
合起来就是除闰年的2月29日外的其它所有日期
代码如下 | 复制代码 |
(?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31) |
接下来考虑闰年的实现
1 : 四年一闰
代码如下 | 复制代码 |
([0-9]{2}(0[48]|[2468][048]|[13579][26]) |
2 : 百年不闰,四百年再闰
代码如下 | 复制代码 |
(0[48]|[2468][048]|[13579][26])00 |
3 : 合起来就是所有闰年的2月29日
代码如下 | 复制代码 |
([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29) |
四条规则都已实现,且互相间没有影响,合起来就是所有符合DateTime范围的日期的正则
代码如下 | 复制代码 |
^((?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)|([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)$ |
考虑到这个仅仅是用作验证,所以捕获组没有意义,只会占用资源,影响匹配效率,所以可以使用非捕获组来进行优化。
代码如下 | 复制代码 |
^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$ |
代码如下 | 复制代码 |
//js 正则验证日期格式,使用Date函数比较日期大小 var dateOfArrival='2013-04-08'; var year='2013'; var month='04'; var day='07'; /* js 正则验证日期格式 */reg=/^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/; if(!reg.test(dateOfArrival)){ alert('日期输入有误!'); } else{ //Date 比较日期大小 var today=new Date(); var arrivalDay=new Date(year,month-1,day); if(arrivalDay<today) { alert('到货日期要大于今天的日期!'); } } |
最后附一些关于日期date函数返回值函数
Date() 返回当日的日期和时间。getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。getMonth() 从 Date 对象返回月份 (0 ~ 11)。getFullYear() 从 Date 对象以四位数字返回年份。getYear() 请使用 getFullYear() 方法代替。getHours() 返回 Date 对象的小时 (0 ~ 23)。getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。getTime() 返回 1970 年 1 月 1 日至今的毫秒数。getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。setMonth() 设置 Date 对象中月份 (0 ~ 11)。setFullYear() 设置 Date 对象中的年份(四位数字)。setYear() 请使用 setFullYear() 方法代替。setHours() 设置 Date 对象中的小时 (0 ~ 23)。setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。setTime() 以毫秒设置 Date 对象。setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。toSource() 返回该对象的源代码。toString() 把 Date 对象转换为字符串。toTimeString() 把 Date 对象的时间部分转换为字符串。toDateString() 把 Date 对象的日期部分转换为字符串。toGMTString() 请使用 toUTCString() 方法代替。 1 3toUTCString() 根据世界时,把 Date 对象转换为字符串。 toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。UTC() 根据世界时返回 1997 年 1 月 1 日 到指定日期的毫秒数。valueOf() 返回 Date 对象的原始值。var objDate=new Date([arguments list]);