欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaScript日期,一个常用的前端数据类型,包括日期的获取方法和设置方法

程序员文章站 2022-05-09 14:07:01
...

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>

好了,今天的文章就写到这里了,写的不好的地方欢迎大家多多指教,更多关于前端的文章大家可以微信搜索公众号“刘小妞的栖息地“或者识别下面图片的二维码查看,感谢大家的支持。

JavaScript日期,一个常用的前端数据类型,包括日期的获取方法和设置方法