JavaScript日期,一个常用的前端数据类型,包括日期的获取方法和设置方法
JavaScript日期也是一种数据类型,它是一种特殊的对象。我们在写程序的时候,也会时不时的用到它。
它有点特殊,它和别的数据类型不太一样。别的数据类型初始化的时候,可以用字面量的形式来给一个变量赋值,但是,日期只能用new的形式。其他的数据类型都可以用new的形式,但是,我不建议大家用new,直接用字面量的形式就好。new的话,它会使代码变的复杂,也会拖慢执行速度,还可能会出现一些让我们意想不到的问题,比如,做比较的时候,字符串会出现不相等的情况,数值会出现值相等类型不相等的情况等等吧。
不管什么数据类型,只要用new的形式初始化,都会成为一个对象。所以说,JS里,所有的东西都可以看成是对象。
对象是类的一个实例化。
类可以理解成具有相同特征的一个群体,比如人类。
对象就是类的一种,比如,我们每个人就是一个对象,也就是一个人类的实例化。
我们获取一个对象的方法就是用关键词new,后面跟上相应的类名。比如,获取一个字符串对象,我们可以用下面这种方式获取。
var str = new String();
后面括号里也可以有参数,比如:
var str = new String('刘小妞');
类名()这种格式叫构造函数。通过new 构造函数,实例化一个对象。
日期的类是Date。所以,获取日期对象格式如下:
var d = new Date();
它的参数有四种格式,如下:
new Date()
new Date(year, month, day, hours, minutes, seconds, milliseconds)
new Date(milliseconds)
new Date(date string)
不管用哪种参数,默认情况下,JS使用浏览器的时区,输出的都是一个字符串,格式如下:
Thu Nov 14 2019 11:10:53 GMT+0800 (中国标准时间)
new Date() 是获取当前日期和时间
。
new Date(year, month, day, hours, minutes, seconds, milliseconds)
获取指定日期和时间,这7个参数是可选的,都是数字。按照字面意思分别代表年、月、日、小时、分钟、秒和毫秒。
注意,年份如果写一位数或者两位数,代表的是19xx年。
月份的参数是从0开始的,也就是说,0代表1月、1代表2月、依次类推,11代表12月。
当上面的参数只有一个的时候,这一个参数不是年,是毫秒。也就是第三种参数格式。
new Date(milliseconds)
它这个毫秒数,是距离1970年1月1日的毫秒数。如果是0,就表示1970年1月1日。后面的时分秒,和当时的时区有关系,会有一些误差。比如:
var d = new Date(60*60*24*1000);
获取的是1970年1月2日。
new Date(date string)
这种参数是日期格式。
日期格式有四种格式:
ISO日期:"YYYY-MM-DD" (国际标准)(首选日期格式)
短日期:"11/14/2019" 或者 "2019/11/14"
长日期:"Nov 14 2019" 或者 "14 Nov 2019"
完整日期:"Thursday November 14 2019"
ISO日期格式是比较常用的格式,表示年月日,月日是可选的。它也可以加时分秒,格式如下:
"YYYY-MM-DDTHH:MM:SS"
。
年月日和时分秒之间用T连接。写个小例子:
<div id="demo"></div>
<script>
var d = new Date("2019-11-14T12:00:00");
document.getElementById("demo").innerHTML = d;
</script>
注意:ISO日期和短日期里的月是从1开始的。以上四种日期格式都需要放在引号里。
长日期里的月日可以换位置,月份可以全称也可以简称,并且不区分大小写。
- 日期获取方法
我们用日期这种数据类型的时候,大部分是想获取日期。日期提供了一些列的获取方法。主要是获取相应的年月日、时分秒、毫秒、星期、时间戳。下面一一介绍。
getFullYear():获取四位的年(yyyy)
getMonth():获取月(0-11)
getDate():以数值返回天(1-31)
getHours():获取小时(0-23)
getMinutes():获取分(0-59)
getSeconds():获取秒(0-59)
getMilliseconds():获取毫秒(0-999)
getDay():以数值获取周名(0-6)
getTime():获取时间(从 1970 年 1 月 1 日至今),也就是我们常说``的时间戳。
写一个获取当前的年月日的小例子。
<div id = "demo"></div>
<script>
var d = new Date();
var str = d.getFullYear() + '-' + (d.getMonth()+1) + '-' + d.getDate();
document.getElementById("demo").innerHTML = str;
</script>
说几个需要注意的地方:
getMonth()获取月,返回的是0-11,0表示1月、1表示2月,依··次,11``表示12月。
getDay()获取周,返回的是0-6。0表示周日、1表示周一、依次,6表示周六。
- 日期设置方法
日期对象也提供了一系列的设置方法。主要也是来设置年月日、时分秒这些。这些设置方法也可以用我们实例化时的参数来实现相应的效果。我们在这里也给大家简单的介绍一下。
setFullYear():设置年(可选月和日)
setMonth():设置月(0-11)
setDate():以数值(1-31)设置日
setHours():设置小时(0-23)
setMinutes():设置分(0-59)
setSeconds():设置秒(0-59)
setMilliseconds():设置毫秒(0-999)
setTime():设置时间(从 1970 年 1 月 1 日至今的毫秒数)
说几个特殊的地方
setFullYear() 设置年。可以单独一个参数,表示年;也可以设置月和日两个参数。写法如下:
var d = new Date();
d.setFullYear(2020); //2020年的今天
d.setFullYear(2020,11); //2020年12月的今天
d.setFullYear(2020,11,20);
setDate() 设置日。可以将天数添加到日期,比如想知道20天后的日期,我们可以这样写:
<div id="demo"></div>
<script>
var d = new Date();
d.setDate(d.getDate() + 20);
document.getElementById("demo").innerHTML = d;
</script>
日期对象是可以直接比较的。比如:
<p id="demo"></p>
<script>
var today, someday, text;
today = new Date();
someday = new Date(2020, 0, 15);
if (someday > today) {
text = "今天在 2020 年 1 月 15 日之前。";
} else {
text = "今天在 2020 年 1 月 15 日之后。";
}
document.getElementById("demo").innerHTML = text;
</script>
好了,今天的文章就写到这里了,写的不好的地方欢迎大家多多指教,更多关于前端的文章大家可以微信搜索公众号“刘小妞的栖息地“或者识别下面图片的二维码查看,感谢大家的支持。
上一篇: 一个获取最新期货品种交易时间的小脚本