js Date对象总结

  Date在js中和Array类似,都是拥有自己的特殊方法的特殊对象。

  由于平常用到Date着实不多,对它的了解颇浅。上周被问到怎么样获取某年某个月的天数,我当时想了一会儿,回答说有两种,一种自己写判断闰年的逻辑,每个月天数分两种情况存数组,一种是利用js Date对象的特性(其实是他总结的...)。不过具体用到什么特性我答不上来。现在既然想起来了,也学习总结一下好了。

  1.Date get和set系列

  (注:getTime()具体的参照时间为1970年1月1日8点0分0秒)

  所有的set对应都有get系列,详情参照 http://www.w3school.com.cn/jsref/jsref_obj_date.asp。

  值得注意的是所有的get和set都必须初始化一个实例并以实例的属性方式调用。如:

 

  其实也很容易理解,毕竟要设置或者返回Date对象的值,肯定这个值得先存在啊。标准点的写法是var date=new Date(2015,7,30);date.getDate()

  如果new Date()里面没有传任何参数,也没有用任何set系列方法,那么就指的是当前的值(本地计算时钟),包括时分秒。js中可以很容易用这个特征来以任何形式显示当前时间。

var date = new Date(),nowYear = date.getFullYear(),nowMonth = date.getMonth() + 1,  //注意getMonth从0开始,getDay()也是(此时0代表星期日)nowDay = date.getDate(),nowHour = date.getHours(),nowMinute = date.getMinutes(),nowSecond = date.getSeconds(),weekday = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],nowWeek = weekday[date.getDay()];
console.log(nowYear + '年' + nowMonth + '月' + nowDay + '日' + nowHour + '时' + nowMinute + '分' + nowSecond + '秒' + nowWeek);

  同样,利用内置的 setInterval 或者 setTimeout 回调自身的方法,可以很容易的做时钟效果。见w3cSchool http://www.w3school.com.cn/tiy/t.asp?f=jsrf_date_timing_clock。

  2.其它方法

  首先是每个对象都有的valueOf()(得到真实值)和toString()(得到字符串形式表示值)。注意红色框内的不同。

  

  然后是

    toTimeString() :将Date对象时间部分转化为字符串并返回,因此必须有时间参数,必须有实例,

    toDateString() :将Date对象的日期部分转化为字符串并返回,必须有实例。

 

  最后是

    parse() : 返回1970年1月1日8点整到指定日期(字符串)的毫秒数,精确到秒。只能用Date.parse(Date实例)的形式调用。 (注意比较getTime(),精确到毫秒。)

    toSource() : 返回源代码。

  注:toLocaleString:根据本地时间格式,将Date对象转化为字符串,与UTC,GMT对应,在Array和在Date中这个方法都已经过时,就不再纠结。UTC系列用得很少,也就是格式有所不同,详情参见http://www.w3school.com.cn/jsref/jsref_obj_date.asp。

  3.重要知识点小结

  (1)set系列的参数讨论

    setFullYear()前三个参数有用,时分秒还是本地的~~~

 

    其它set系列都只有第一个参数有用,返回值分别为在new Date()(当前时间)的基础上加上了Month/Date/Minutes * 对应的第一个参数。

 

  (2)设置完整时间

  

  很明显setTime也是set系列,故而只是在原来的基础上增加了1992毫秒(显示为1s)。由于setTime比较特殊,是以1970年1月1日早上8点( FF、Chrome、IE5+、Opera (safari用得少就没测) 中测试,虽然w3School中说是0点,但是测试一下new Date(1970,0,1,8,0,0).getTime()显示为0就很明显了 )为基准开始算的,因此在实际执行前其实date实例已经不是new Date()所对应的当前时间了,而是有一个被转化为基准时间的过程。所以显示的为1970,0,1,8,0,1。如果将1992改为5000则为1970,0,1,8,0,5。

  而设置完整时间的方法,为new Date对象的时候传入需要设置的时间的参数。可以为1992,10,3,10,2,50 (还可以加上毫秒级,然后用getTime()检测出来,但是一般用不上) 的数字形式 (表示1992年11月3日10时2分50秒),也可以为标准字符串格式(但一般不会这么写吧~~~)。

 

  (3)getDate()

  一般放在后面就是用来压轴用的,嘿嘿。

  作为get系列,除了参数的个数有些讲究之外,参数的取值也是很有讲究的。首先回答最初的问题,得到某年某个月的最大天数(可以理解为判断闰年~)。

new Date(2014,2,0).getDate();     //返回2014年2月份的最后一天(28)

  当第三个参数为0的时候,其实是返回上一个月的最后一天 (注意月份的数字2实际上是三月份,故而代码是返回2月份的最后一天在当月中的序号)。看更多例子

new Date(2014,1,30).getDate();     //返回2014年3月2日在3月份中的天数(2)
new Date(2014,2,-1).getDate();     //返回2014年2月份的倒数第二天(27)//当参数缺少的时候显示1
new Date(2014,8).getDate(); 
new Date(14,18).getDate(); 
new Date(180).getDate();//当参数多余的时候多余的不起作用(并没有设置对arguments[3+]的操作)
new Date(2015,2,0,2).getDate();  

  天数多了会自动往下月计算,天数为负数则往上个月计算。参数少了有问题,多了的话多的部分没作用。对比其它的set系列其实也差不多就是这么个实现的思路,看(2)就知道了。

 

  (4)兼容性  

      类似 new Date('xxxx/xx/xx xx:xx:xx') 形式的时间对象在 IOS 和 Andriod 系统上都可以被正确的识别,而类似 new Date('xxxx-xx-xx xx:xx:xx') 形式的时间对象在 ios 系统上无法被正确的识别,需要做一层转化。

function parseDate(dateStr) {if (!dateStr) {return new Date();}if (dateStr.indexOf('/') > -1) {return new Date(dateStr);} else {return new Date(dateStr.replace(/-/g, '/'));}
}

  

  我明明记得还有个什么挺重要的部分没写,但就是忘了~~~待我想起来再添加上去。如果本文中有什么纰漏或者不正确的地方,欢迎指正,谢谢!

转载于:https://www.cnblogs.com/codetker/p/4690424.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/419700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php openssl做什么,php开启openssl的方法

php开启openssl的方法关注:294 答案:2 mip版解决时间 2021-02-02 21:13提问者笑低了眉眼2021-02-02 05:23我是一个小白,对于php完全不懂,所以希望大神能给我写一个傻瓜教程。php.ini在哪啊,怎么修改啊什么的都不懂。该用什么做什么&#xf…

LightOJ 1422 区间DP Halloween Costumes

d(i, j)表示第i天到第j天至少要穿多少件衣服。 先不考虑第i天和后面 i1 ~ j 天的联系,那就是至少要穿 1 d(i1, j)件衣服。 再看状态转移,如果后面第k(i1 ≤ k ≤ j)天所穿的衣服和第i天一样的话,那么完全可以把第i1~k-1天所穿的衣服脱下来。…

php自动获取m3u8,PHP自动Get监控源码分享

使用方法:创建个PHP文件放到你的网站根目录里面,访问后不会出现结果,等待个20秒左右关闭页面,就会自动执行了。如果不重启php服务器 或者重启服务器,get监控一直会处于运行状态。测试了一下 秒赞网的监控,效…

前端学习(1575):复习todoMVC

系统再演示一下angular的实现原理流程 分装实现 两个文件 js和html

蛋疼的中文编码及其计算机编码历史

更好的博客:http://my.oschina.net/goldenshaw/blog?catalog536953 一:编码发展: 1 ANSI编码:计算机在美国出现,使用单字节8位编码,共可以表示255个状态。(0-32(0x00-0x20&#xff…

php io select,Python IO多路复用之——select方案服务端和客户端代码【python源码详解】...

准备文件:IO.py 服务端代码tcp_c.py 客户端代码IO.py 代码:from select import * #引入 select 模块from socket import * #引入 socket 模块s socket() #实例化一个socket 对象s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #设置端口可重用s.bind((0.0.0…

matlab 数字图像滤波,数字图像处理 (基于Matlab) 滤波

《数字图像处理》实验报告一、实验目的(不少于200字)一、第一个实验用的是各种空间域的方式来滤波,也就是直接把图像和空间滤波器的模板做卷积,当然图像处理很重要的一个部分还有频域的处理。这就涉及到图像的傅里叶变换,通过将空域内的图像傅…

matlab 8.4,《DSP using MATLAB》Problem 8.42

代码:%% ------------------------------------------------------------------------%% Output Info about this m-filefprintf(‘\n***********************************************************\n‘);fprintf(‘ Problem 8.42 \n\n‘);banner();%% ------------…

lua的string.gsub初使用

今天在学习lua,熟悉项目代码的过程中,发现string.gsub好高级,所以在此mark下。 以下是lua5.1的官方文档介绍。 string.gsub (s, pattern, repl [, n])Returns a copy of s in which all occurrences of the pattern have been replaced by a …

php程序变量,PHP 变量

PHP 变量变量是用于存储信息的"容器":实例$x5;$y6;$z$x$y;echo $z;?>运行实例 与代数类似x5y6zxy在代数中,我们使用字母(如 x),并给它赋值(如 5)。从上面的表达式 zxy ,我们可以计算出 z 的值为 11。在 PHP 中&…

漏洞:WebRTC 泄漏用户IP

WebRTC又称为“网页即时通信”,是一组API函数,它经过W3C组织的认证,支持浏览器之间的语音通话、视频聊天和P2P模式分享文件。 这个协议主要包括:getUserMedia,RTCPeerConnection,RTCDataChannels&…

怎么在电脑安装php文件夹在哪个文件夹,php进行文件上传时找不到临时文件夹怎么办,电脑自动保存的文件在哪里...

php进行文件上传时找不到临时文件夹怎么办PHP上传文件时找不到临时文件夹怎么办,php上传文件时找不到临时文件夹的解决方案:先打开php.ini配置文件;然后修改内容[upload _ tmp _ dir’ c :/windows/temp ‘],文件夹路径要根据自己…

【SIGGRAPH 2015】【巫师3 狂猎 The Witcher 3: Wild Hunt 】顶级的开放世界游戏的实现技术。...

【SIGGRAPH 2015】【巫师3 狂猎 The Witcher 3: Wild Hunt 】顶级的开放世界游戏的实现技术 作者:西川善司日文链接 http://www.4gamer.net/games/202/G020288/20150811091/计算机图形和交互技术的学术大会【SIGGRAPH 2015】,在北美时间的8月9日到13日召…