Js如何操作date对象
Date在js中和Array类似,都是拥有自己的特殊方法的特殊对象。
由于平常用到Date着实不多,对它的了解颇浅。上周被问到怎么样获取某年某个月的天数,我当时想了一会儿,回答说有两种,一种自己写判断闰年的逻辑,每个月天数分两种情况存数组,一种是利用js Date对象的特性(其实是他总结的...)。不过具体用到什么特性我答不上来。现在既然想起来了,也学习总结一下好了。
Date get和set系列
(注:getTime()具体的参照时间为1970年1月1日8点0分0秒)
所有的set对应都有get系列.
值得注意的是所有的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 回调自身的方法,可以很容易的做时钟效果。
首先是每个对象都有的valueOf()(得到真实值)和toString()(得到字符串形式表示值)。注意红色框内的不同。
toTimeString() :将Date对象时间部分转化为字符串并返回,因此必须有时间参数,必须有实例,
toDateString() :将Date对象的日期部分转化为字符串并返回,必须有实例。
parse() : 返回1970年1月1日8点整到指定日期(字符串)的毫秒数,精确到秒。只能用Date.parse(Date实例)的形式调用。 (注意比较getTime(),精确到毫秒。)
toSource() : 返回源代码。
注:toLocaleString:根据本地时间格式,将Date对象转化为字符串,与UTC,GMT对应,在Array和在Date中这个方法都已经过时,就不再纠结。UTC系列用得很少,也就是格式有所不同.
重要知识点小结
set系列的参数讨论
setFullYear()前三个参数有用,时分秒还是本地的~~~
其它set系列都只有第一个参数有用,返回值分别为在new Date()(当前时间)的基础上加上了Month/Date/Minutes * 对应的第一个参数。
设置完整时间
很明显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秒),也可以为标准字符串格式(但一般不会这么写吧~~~)。
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)就知道了。
类似 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, '/')); } }
相信看了这些案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
相关阅读:
以上是Js如何操作date对象的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PyCharm是一款非常流行的Python集成开发环境(IDE),它提供了丰富的功能和工具,使得Python开发变得更加高效和便捷。本文将为大家介绍PyCharm的基本操作方法,并提供具体的代码示例,帮助读者快速入门并熟练操作该工具。1.下载和安装PyCharm首先,我们需要前往PyCharm官网(https://www.jetbrains.com/pyc

sudo(超级用户执行)是Linux和Unix系统中的一个关键命令,允许普通用户以root权限运行特定命令。sudo的功能主要体现在以下几个方面:提供权限控制:sudo通过授权用户以临时方式获取超级用户权限,从而实现了对系统资源和敏感操作的严格控制。普通用户只能在需要时通过sudo获得临时的特权,而不需要一直以超级用户身份登录。提升安全性:通过使用sudo,可以避免在常规操作中使用root账户。使用root账户进行所有操作可能会导致意外的系统损坏,因为任何错误或不小心的操作都将具有完全的权限。而

想必很多的用户家里都有那么几台不用的电脑,因为长时间不用完全忘记了开机密码,于是想要知道一下,忘记密码要怎么操作呢?那就一起来看看吧。win10开机密码忘记按F2怎么操作1、按下电脑的电源键,然后开机时按下F2(不同电脑品牌进入bios的按键也不同)。2、在bios界面中,找到security选项(不同品牌电脑的位置可能有所不同)。一般都在顶部的设置菜单中。3、然后找到SupervisorPassword选项并且点击。4、这时候用户就可以看到自己的密码了,同时找到旁边的Enabled切换为Dis

LinuxDeploy的操作步骤及注意事项LinuxDeploy是一款强大的工具,可以帮助用户在Android设备上快速部署各种Linux发行版,让用户能够在移动设备上体验到完整的Linux系统。本文将详细介绍LinuxDeploy的操作步骤以及注意事项,同时提供具体的代码示例,帮助读者更好地使用这一工具。操作步骤:安装LinuxDeploy:首先在

随着智能手机的普及,截屏功能成为日常使用手机的必备技能之一。华为Mate60Pro作为华为公司的旗舰手机之一,其截屏功能自然也备受用户关注。今天,我们就来分享华为Mate60Pro手机的截屏操作步骤,让大家能够更加便捷地进行截屏操作。首先,华为Mate60Pro手机提供了多种截屏方式,可以根据个人习惯选择适合自己的方式进行操作。下面详细介绍几种常用的截

1.PDO简介PDO是PHP的一个扩展库,它提供了一个面向对象的方式来操作数据库。PDO支持多种数据库,包括Mysql、postgresql、oracle、SQLServer等。PDO使开发人员能够使用统一的api来操作不同的数据库,这使得开发人员可以在不同的数据库之间轻松切换。2.PDO连接数据库要使用PDO连接数据库,首先需要创建一个PDO对象。PDO对象的构造函数接收三个参数:数据库类型、主机名、数据库用户名和密码。例如,以下代码创建了一个连接到mysql数据库的对象:$dsn="mysq

JavaScript教程:如何获取HTTP状态码,需要具体代码示例前言:在Web开发中,经常会涉及到与服务器进行数据交互的场景。在与服务器进行通信时,我们经常需要获取返回的HTTP状态码来判断操作是否成功,根据不同的状态码来进行相应的处理。本篇文章将教你如何使用JavaScript获取HTTP状态码,并提供一些实用的代码示例。使用XMLHttpRequest

目录Astar Dapp 质押原理质押收益 拆解潜在空投项目:AlgemNeurolancheHealthreeAstar Degens DAOVeryLongSwap 质押策略 & 操作“AstarDapp质押”今年初已升级至V3版本,对质押收益规则做了不少调整。目前首个质押周期已结束,第二质押周期的“投票”子周期刚开始。要获取“额外奖励”收益,需把握此关键阶段(预计持续至6月26日,现余不到5天)。我将细致拆解Astar质押收益,
