打卡时间:16:00-17:30
ECMAScript5添加了Date.now( )方法,返回表示调用这个方法的日期和时间的毫秒数。这个方法简化了使用Date对象分析代码的工作。例:
var start = Date.now( );//取得开始时间
doSomething( );//调用函数
var stop = Date.now( ),
result = stop - start ; //取得停止时间
继承的方法
Date类型也重写了toLocaleString( )、toString( )和valueof( )方法;但是返回的类型与其他类型中的方法不同。
◆ toLocaleString( )方法会按照与浏览器设置的地区相适应的格式返回日期和时间,不包含时区信息。
◆ toString( )方法则通常返回带有时区信息的日期和时间,其中时间一般以军用时间(0-23)表示
例如:
toLocaleString( ) —— Thurdsay , February 01 , 2007 12:00:00 AM
toString( ) —— Thu Feb 1 00:00:00 PST 2007
在不同浏览器中调用toLocaleString( )和toString( )输出PST时间时,这两个方法在不同的浏览器中返回的日期和时间格式可谓大相径庭。事实上,toLocaleString( )和toString( )的这一差别仅在调试代码时比较有用,而在显示日期和时间时没有什么价值。
↓↓↓
这里又提到一个PST时间(Pacific Standard Time,太平洋标准时间)
UTC/GMT/PST到底是什么关系,什么区别?
UTC=GMT;北京时间BST=格林尼治平均时GMT+8;PST=GMT-8。所以
(UTC)Thu ,May 5 ,17:00-18:00 ,Thursday +8小时 即北京时间 5月6日周五凌晨01:00-02:00;
(PST美国太平洋标准时间)May 05, 2011 10:00-11:00 +16小时 即北京时间 2011年5月6日 凌晨2:00-3:00。
↑↑↑
◆ 而valueof()方法不返回字符串,只返回日期的毫秒表示。所以可以使用比较操作符来比较日期值。例:
var data1 = new Date(2007,0,1);//"January 1,2007"
var data2 = new Data(2007,1,1);//"February 1,2007"
alert (data1<data2);//true
alert(data1>data2);//false
//虽然1月1日早于1月2日,但是valueof是通过毫秒数来比较大小的。
日期格式化方法
Date 类型还有一些专门用于将日期格式化为字符串的方法:
● toDateString( ) —— 以特定实现的格式显示星期几、月、日和年;
● toTimeString( ) —— 以特定于实现的格式显示时、分、秒和时区;
● toLocaleDateString( ) —— 以特定于地区的格式显示星期几、月、日和年;
● toLocaleTimeString( ) —— 以特定于实现的格式显示时、分、秒;
● toUTCString( ) —— 以特定于实现的格式完整的UTC日期。
与toLocaleString( )和toString( )方法一样,以上这些字符串格式的输出也是因浏览器而异,没有哪一个方法能够用来在用户界面上显示一致的日期信息。
日期/时间组件方法
UTC日期指的是在没有时区偏差的情况下(将日期转换为GMT时间)的日期值。
方法 | 说明 |
---|---|
getTime( ) | 返回表示日期的毫秒数;与valueof()方法返回的值相同 |
setTime(毫秒 ) | 以毫秒设置日期,会改变整个日期 |
getFullYear( ) | 取得4位数的年份(如2007而非仅07) |
getUTCFullYear( ) | 返回UTC日期的4位数年份。 |
setFullYear(年) | 设置日期的年份。传入的年份必须是位数字。(如2007而非仅07) |
setUTCFullYear(年) | 设置UTC日期的月份。传入的年份值必须是4位数(如2007而非仅07) |
![](https://img.haomeiwen.com/i5137027/2e336b560dc170e4.png)
![](https://img.haomeiwen.com/i5137027/185055b9beb0627e.png)
RegExp类型
ECMAScript通过RegExp类型来支持正则表达式。使用下面类似Perl的语法,就可以创建一个正则表达式:
`var expression = / pattern / flags ;
其中的模式(pattern)部分可以是任何简单或复杂的正则表达式,可以包含字符类、限定符、分组、向前查找以及反向引用。每个正则表达式都可带有一或多个表示(flag),用以表明正则表达式的行为。
正则表达式的匹配模式智齿下列3个标志:
● g:表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立刻停止;
● i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写;
● m:表示多行(multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项。
因此,一个正则表达式就是一个模式与上述3个标志的组合体。不同组合产生不同结果。
与其他语言中的正则表达式类似,模式中使用的所有元字符都必须转义。正则表达式中的元字符包括:
{ [ ( \ ^ $ | ? * + . ) ] }
这些元字符在正则表达式中都有一或多种特殊用途,因此如果想要匹配字符串中包含的这些字符,就必须对它们进行转义。
创建正则表达式的方式一种是上面的这种以字面量形式来定义。另一种方式是使用RegExp构造函数,它接受两个参数:一个是要匹配的字符串模式,另一个是可选的标志字符串。可以使用字面量定义的任何表达式,都可以使用构造函数来定义。例:
/*匹配第一个“bat”或“cat”,不区分大小写*/
var pattern1 = /[bc]at/i ;
/*与pattern1相同,只不过是使用构造函数创建的 */
var pattern2 = new RegExp("[bc]at","i");
//上面的pattern1和pattern2是两个完全等价的正则表达式。
要注意的事,传递给RegExp构造函数的两个参数都是字符串,不能把正则表达式字面量传递给RegExp构造函数。犹豫RegExp构造函数的模式参数是字符串,所以在某些情况下要对字符进行双重转义。
![](https://img.haomeiwen.com/i5137027/82da858bdf16c14b.png)
使用正则表达式字面量和使用RegExp构造函数创建的正则表达式不一样。在ECMAScript3中,正则字面量始终会共享同一个RegExp实例。而使用构造函数创建的每一个新RegExp实例都是一个新实例。
网友评论