JavaScript引用类型——Date

    ECMAScript中的Date类型是在早期Java中的java.util.Date类基础上构建的。所以,Date使用UTC(Coordinated Universal Time,国际协调时间)。1970年1月1日午夜(零时)开始经过的毫秒数来保存日期。在这种格式下,Date类型保存的日期能够精确到1970年1月1人之前或之后的285616年。

1、创建Date

    创建日期对象,可以使用new操作符和Date构造函数。

var now = new Date;

    在调用Date构造函数没有传递参数是,新建的对象自动获得当前的日期和时间。可以传递特定日期的毫秒数(从UTC时间1970年1月1日午夜起至该日期经过的毫秒数)来创建特定的时间对象。

var date = new Date(1435212828121);

    ECMAScript提供了两个方法:Date.parse()和Date.UTC()来简化Date对象创建。

    Date.parse()方法接收一个表示日期的字符串参数,然后根据这个字符串返回相应的日期的毫秒数。ECMA-262没有定义Date.parse()应该支持哪种日期函数,所以这个方法的行为因实现而异,通常因地区而异。通常有以下格式:

  • ”月/日/年”,如6/13/2004

  • "英文月名 日,年",如January 12,2004

  • “英文星期几 英文月名 日 年 时:分:秒 时区“,如Tue May 25 2004 00:00:00 GMT-0700

  • ISO 8601扩展格式 YYYY-MM-DDTHH:mm:ss.sssZ(例如2004-05-25T00:00:00)。

var someDate = new Date(Date.parse("May 25,2004"));

    如果传入Date.parse()方法的字符串不能表示日期,会返回NaN。如果直接将日期字符串传递给Date构造函数,后台会调用Date.parse()。上面的代码与下面的等价:

var  someDate = new Date("May 25,2004");

    Date.UTC()方法也返回表示日期的毫秒数。其参数分别是年份、基于0的月份(0-11)、月中的哪一天(1-31)、小时数(0-23)、分钟、秒以及毫秒数。其中年和月是必需的。如果没有提供月,默认为1;省略其他参数,默认为0。

//GMT时间2000年1月1日8时(FF午夜零时)
var y2k = new Date(Date.UTC(2000,0));

//GMT时间2005年5月6日下午1:55:55(FFGMT时间2005年5月5日下午5:55:55)
var allFives = new Date(Date.UTC(2005,4,5,17,55,55));

    注意:Date.UTC()会自动加上时差,如中国处在东8区,比国际变更线早8个小时,所以当参数中小时数设置为0时,则实际创建对象会加上8小时,依此设置为1时则为9,设为2时则为10。

    可以直接给Date构造函数传递Date.UTC()方法的参数。

//本地时间2000年1月1日午夜零时(FF 1999年12月31日16:00:00)
var y2k = new Date(2000,0);

//本地时间2005年5月5日下午5:55:55(FF 2005年5月5日上午9:55:55)
var allFives = new Date(2005,4,5,17,55,55);
2、日期格式化方法

    Date类型有一些专门用于将日期个格式化为字符串的方法,如下:

  • toDateString()——以特定与实现的格式显示星期几、月、日和年;

  • toTimeString()——以特定实现的格式显示时、分、秒和时区;

  • toLocaleDateString()——以特定于地区的格式显示星期几、月、日和年;

  • toLocaleTimeString()——以特定于实现的格式显示时、分、秒;

  • toUTCString()——以特定于实现的格式完整的UTC日期。

3、日期/时间组件方法

    

方法说明
gettime()返回表示日期的毫秒数,与valueOf()方法返回的值相同
setTime(毫秒)以毫秒数设置日期,会改变整个日期
getFullYear()取得4位数的年份
getUTCFullYear()返回UTC日期的4位数年份
setFullYear(年)设置日期年份。传入的年份值必须是4位数
setUTCFullYear(年)设置UTC日期的年份。传入的年份值必须是4位数
getMonth()返回日期中的月份,0——1月,11——12月
getUTCMonth()返回UTC日期中的月份,0——1月,11——12月
setMonth(月)设置日期的月份。传入的月份值必须大于0,超过11则增加年份。
setUTCMonth(月)设置UTC日期的月份。传入的月份值必须大于0,超过11则增加年份。
getDate()返回日期月份中的天数(1-31)
getUTCDate()返回UTC日期月份中的天数(1-31)
setDate(日)设置日期月份中的天数。如果传入值超过了该月中应有的天数,则增加月份。
setUTCDate(日)设置UTC日期月份中的天数。如果传入值超过了该月中应有的天数,则增加月份。
getDay()
返回日期中星期的星期几(其中0表示星期日,6表示星期六)
getUTCday()返回UTC日期中星期的星期几(其中0表示星期日,6表示星期六)
getHours()返回日期中的小时数(0-23)
getUTCHours返回UTC日期中的小时数(0-23)
setHours(时)设置日期中的小时数。传入的值超过23则增加月份中的天数
setUTCHours(时)设置UTC日期中的小时数。传入的值超过23则增加月份中的天数
getMinutes()返回日期中的分钟数(0-59)
getUTCMinutes()返回UTC日期中的分钟数(0-59)
setMinutes(分)设置日期中的分钟数。传入的值超过59则增加小时数
setUTCMinutes(分)设置UTC日期中的分钟数。传入的值超过59则增加小时数
getSeconds()返回日期中的分钟数(0-59)
getUTCSeconds()返回UTC日期中的分钟数(0-59)
setSeconds(秒)设置日期中的秒数。传入的值超过了59会增加分钟数
setUTCSeconds(秒)设置UTC日期中的秒数。传入的值超过了59会增加分钟数
getMilliseconds()
返回日期中的毫秒数
getUTCMilliseconds()返回UTC日期中的毫秒数
setMilliseconds(毫秒)设置日期中的毫秒数
setUTCMilliseconds(毫秒)设置UTC日期中的毫秒数
getTimezoneOffset()返回本地时间与UTC时间相差的分钟数


转载于:https://my.oschina.net/u/1457082/blog/470587

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值