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)

接下来考虑闰年的实现 http://www.111cn.net/wy/js-ajax/55117.htm

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)$

Date函数比较日期大小,这里就要用于正则表达式了

 代码如下 复制代码

//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 3
toUTCString() 根据世界时,把 Date 对象转换为字符串。 
toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。
UTC() 根据世界时返回 1997 年 1 月 1 日 到指定日期的毫秒数。
valueOf() 返回 Date 对象的原始值。
var objDate=new Date([arguments list]);

Javasript中Date日期常用用法(正则、比较)相关推荐

  1. php中年月日用什么参数,PHP中date()日期函数参数整理

    PHP中date()日期函数参数整理 发布于 2014-11-19 13:34:06 | 105 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...

  2. php中date里面的参数,PHP中date()日期函数有关参数整理

    PHP中date()日期函数有关参数整理 更新时间:2011年07月19日 22:47:41   作者: PHP中date()日期函数有关参数整理,需要的朋友可以参考下. 在页面的最前页加上 date ...

  3. Java中Date各种相关用法

    Java中Date各种相关用法 本文主要介绍Java中Date各种相关用法. AD:   Java中Date各种相关用法(一) 1.计算某一月份的最大天数 Java代码 Calendar time=C ...

  4. java中Date日期类型的大小比较

    java中Date日期类型的大小比较 方法一: java.util.Date类实现了Comparable接口,可以直接调用Date的compareTo()方法来比较大小 String beginTim ...

  5. java中M格式_Java中Date日期字符串格式的各种转换

    编程语言 Java中Date日期字符串格式的各种转换 字号+ 作者:小虾米 2017-04-21 08:51 以下程序源码都是从网络上整理之后,才发到本网站的,新手请收藏啊! public class ...

  6. java中struts2日期_Struts2中Date日期转换的问题

    今天跑程序的时候莫名其妙的出现了下面的一个异常: java.lang.NoSuchMethodException:com.ca.agent.model.mybatis.ApprovalInforCan ...

  7. C++中cin的常用用法

    code: // File name: Cin_Usage // Last modified Date: 2021年10月13日21点26分 // Last Version: V1.0 // Desc ...

  8. linux中命令date,Linux 中date命令的用法

    关于Linux内置命令date的用法,这里主要说一下,它在shell脚本中如何做日期计算和转换的. 格式化输出日期 详细的格式化符号可以用man date找到,这里以年月日来表示 获得当前的日期: # ...

  9. Js中Date日期的使用(加一天,加一个月,获取0时0分0秒,23时59分59秒等)

    代码示例如下:(以当前日期new Date()为例.也可以将例中new Date()换成任意Date对象) 1.获取今天的0时0分0秒(常用于开始日期的获取) var startDate= new D ...

  10. Js中Date日期输出不同结果(格式)(加一天,加一个月,获取0时0分0秒,23时59分59秒等)

    代码示例如下:(以当前日期new Date()为例.也可以将例中new Date()换成任意Date对象) 1.获取今天的0时0分0秒(常用于开始日期的获取) var startDate= new D ...

最新文章

  1. 【C 语言】数组 ( 数组类型表达 | 定义数组类型 )
  2. Linux信号量之用户态信号量(Posix信号量->无名信号量)
  3. 张志华教授《机器学习导论》和《统计机器学习》课程讲义
  4. 数据湖探索DLI新功能:基于openLooKeng的交互式分析
  5. [导入]存储过程-分隔符号-多条件查询
  6. 第七节:SpringBoot高级属性配置二
  7. 光电整纬机(日本世联电子株式会社)
  8. Android Fragment + ViewPater + Fragment嵌套Fragment实战
  9. presto读取oracle,Presto数据接入方式
  10. Improving Opencv 7: The Core Functionality : Discrete Fourier Transform
  11. 环境类sci期刊排名一区_这本国产SCI论文期刊今年首破5分,明年或超6分
  12. 推荐系统之协同过滤算法
  13. Hadoop原理和特性
  14. R语言学习笔记四:秩和检验
  15. 洛谷每日三题之第六天
  16. 关于解码 decode 的错误
  17. 单月涨粉30w+,他们掌握引流法宝,小红书1月创作趋势是什么?
  18. Word如何自动更新域
  19. python生成曼德勃罗分形图形
  20. Unity资源加载发布到移动端iphone/ipad

热门文章

  1. matlab 常用函数或符号用法总结
  2. 五子棋c语言代码光标,c语言写的鼠标操作的五子棋游戏,欢迎观赏!
  3. mysql 循环_MySQL存储过程中的3种循环【转载】
  4. spring cloud构建互联网分布式微服务云平台-服务提供与调用
  5. 设置UITextField键盘上return key不可点击
  6. Google Earth 6 Beta版发布 (供下载地址)
  7. 解决IE7中移动文件夹无法收藏问题
  8. 【SpringBoot_ANNOTATIONS】组件注册 03 FilterType
  9. Annotation-specified bean name ‘mapper‘ for bean class [com.thoughtworks.xstream.mapper.Mapper] conf
  10. java基础回顾---static关键字