36.一文讲透JavaScript日期对象Date,时间戳1970date方法date计算
Posted @魏大大
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了36.一文讲透JavaScript日期对象Date,时间戳1970date方法date计算相关的知识,希望对你有一定的参考价值。
文章目录
javascript日期和时间处理方法
日期和时间是编程过程中不可绕过的必修课,好在JavaScript
为我们准备好了一个内建的对象Date(日期)。通过该对象,我们可以创建、存储、修改、测量时间、打印等基础操作,是每个JavaScript
程序员的必修课之一。
Date对象的创建
和普通的对象一样,我们可以使用new Date()
来创建一个Date
对象,还可以在创建的时候传入一些初始化参数。
new Date()
不带参数的创建案例:
let now = new Date()
console.log(now)
代码执行结果如下:
这样就简单的输出了代码执行时的具体时间,这里显示的就是2022年6月22日 19点25份24秒
。
new Date(milliseconds)
创建一个带有毫秒参数的日期对象,其中milliseconds
指的是自1970年1月1日UTC+0之后的毫秒数(1毫秒=1/1000秒)。
//创建一个时间,举例1970.1.1时间点0毫秒
let jan01_1970 = new Date(0)
console.log(jan01_1970)
//创建一个时间,比1970年1.1时间点晚3天(3天*24小时*3600秒*1000毫秒)
let jan04_1970 = new Date(3 * 24 * 3600 * 1000)
console.log(jan04_1970)
代码执行结果:
milliseconds
就是从1970年1月1日 00:00:00以来,经过的毫秒数,或者称之为时间戳。
时间戳是一种简单的日期数字化表示方式,我们通常使用new Date(milliseconds)
创建一个日期。如果我们已经有了一个日期Date
对象,可以使用date.getTime()
获得日期对应的时间戳。
注意:
中国处于动8区,所以上例中的时间都不是00:00:00,而是08:00:00
1970年之前的时间?
时间戳不仅仅是整数,也可以是负数,例如:
//1969-12-31 00:00:00
let dec31_1969 = new Date(-24 * 3600 * 1000)
console.log(dec31_1969)
代码执行结果:
new Date(date_str)
如果每次创建时间都是用时间戳,可能并不方便,因为时间戳计算还是有点难度的。
我们还可以使用时间字符串创建一个时间,举个例子:
let date = new Date('2022-06-22 00:00:00')
console.log(date)
代码执行结果:
new Date(year, month, date, hours, minutes, sec, ms)
year
——必须是四位的数字;month
——[0,11]
,0
表示一月;- date——当月的某一天,默认为
1
; hours/minutes/sec/ms
——默认为0;
举个栗子:
let date = new Date(2022,6,22,20,35,33)
console.log(date)
代码执行结果:
我们还可以指定毫秒数:
let date = new Date(2022,6,22,20,35,33,777)
console.log(date)
Date对象的方法
如果我们有一个Date
对象,我们可以通过Date
对象的内置方法,获取时间的一部分,例如年份、月份、日期等。
获取日期内容
例如我们有日期date
:
let date = new Date(2022,5,22,20,35,33)
getFullYear()
获取年份,date.getFullYear()
返回2022
;getMonth()
获取月份,date.getMonth()
返回5
,也就是6
月;getDate()
获取当月的日期,date.getDate()
返回22
;getDay()
获取当前时间在一周的哪一天,date.getDay()
返回3
;
注意:
- 以上日期都是已于当地日期的,比如我这里是中国的时区
- 获取年份一定要用
getFullYear
,getYear
会返回两位数的年份
我们也可以获得0
时区的时间,也就是UTC
时间,分别对应getUTCFullYear()
、getUTCMonth()
,getUTCDay
等。只需要在get
后插入UTC
即可。
举个例子:
let date = new Date(2022,5,22,20,35,33)
console.log(date.getHours(),date.getUTCHours())
代码执行结果:
夜里也可以看出,中国时区和0
时区相差8
小时。
getTime()
返回日期的时间戳,方法没有UTC
模式;getTimezoneOffset()
返回本地时区和0
时区相差的时间,以分钟为单位,并且没有UTC
模式;
设置日期内容
我们还可以通过Date
对象的方法设置日期中的某一部分:
setFullYear(year, [month], [date])
设置年份(月份、日)setMonth(month, [date])
设置月份(日)setDate(date)
设置日期(月份的第几天)setHours(hour, [min], [sec], [ms])
设置小时(分、秒、毫秒)setMinutes(min, [sec], [ms])
设置分钟(秒、毫秒)setSeconds(sec, [ms])
设置秒(毫秒)setMilliseconds(ms)
设置毫秒setTime(milliseconds)
(使用自1970-01-01 00:00:00 UTC+0
以来的毫秒数来设置整个日期)
以上函数中只有setTime()
没有UTC
变体。
日期的自动校准
JavaScript
的Date
具备自动校准功能,这为我们针对时间的计算提供了极大的方便。
例如:
let date = new Date(2022,5,38)//注意这里的38
console.log(date)
代码的执行结果:
从执行结果我们可以看出"2022年6月38号"并没有使程序出现错误,而是将日期转成了”2022年7月8号“。
以上案例验证了,在JavaScript
中,超出范围的日期会被Date
对象自动分配。这样我们就可以非常方便的使用Date
对象进行日期的计算。
例如,我们可以在日期上对年、月、日进行加减法运算:
let date = new Date(2022,5,23)//当前时间是2022-6-23
date.setDate(date.getDate() + 8)//计算八天后的时间
console.log(date)
代码执行结果:
同样的,我们也可以使用date.setSeconds()
方法已秒为单位计算日期。
日期转为数字、日期差值
日期Date
转为数字的结果和使用date.getTime()
的返回值相同,都是毫秒为单位的数值:
let date = new Date()
console.log(+date)
代码执行结果:
既然时间的本质就是数字,我们也可以进行时间差计算,并且以ms
(毫秒)为单位。
例如:
let date1 = new Date(2022,5,23)
let date2 = new Date(2022,5,24)
console.log(`时间差为$date2-date1ms`)
代码执行结果为:
Date.now()
如果我们希望获得当前时间,更优的做法是使用Date.now()
方法。这个方法会返回当前时间的时间戳,同时不需要创建额外的Date
对象,这对内存开销、垃圾回收都是有好处的,而且代码更简洁。
举个栗子:
let begin = Date.now()
for(let i = 1;i<100000;i++)
let num = i * i * i;
let end = Date.now()
console.log(`consume time $end - beginms`)
代码执行结果:
Date.parse()
Date.parse()
方法可以读取一个日期字符串,并转为时间戳,但是字符串必须遵守一定的规则:YYYY-MM-DDTHH:mm:ss.sssZ
。
YYYY-MM-DD
对应年-月-日
T
属于分隔符HH:mm:ss.sss
对应时:分:秒.毫秒
Z
可以是+-hh:mm
格式的时区。单个字符Z
表示UTC+0
字符串可以使用省略写法,例如:YYYY-MM-DD
、YYYY-MM
、YYYY
。
举个小李子:
let ms = Date.parse('2022-06-23T19:38:30.777+08:00')//时间戳
let date = new Date(ms)
console.log(date)
代码执行结果:
总结
JavaScript
使用Date
对象处理时间:new Date()
;- 月份从0开始计算
Date
具有很多实用的方法,我们可以获取时间中的某一段;Date
对象会自动校准,我们可以直接对日期进行加减法;Date.now()
可以高效的获取当前时间;
javascript高级教程JavaScript Date(日期) 对象
日期对象用于处理日期和时间。
创建日期
Date 对象用于处理日期和时间。
可以通过 new 关键词来定义 Date 对象。以下代码定义了名为 myDate 的 Date 对象:
有四种方式初始化日期:
new Date();
new Date(value);
new Date(dateString);
new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);
上面的参数大多数都是可选的,在不指定的情况下,默认参数是0。
<p从 1970="" 年="" 1="" 月="" 日通用一天计算为86,400,000毫秒<="" p="">
实例化一个日期的一些例子:
var today = new Date()
var d1 = new Date("October 13, 1975 11:13:00")
var d2 = new Date(79,5,24)
var d3 = new Date(79,5,24,11,33,0)
设置日期
通过使用针对日期对象的方法,我们可以很容易地对日期进行操作。
在下面的例子中,我们为日期对象设置了一个特定的日期 (2010 年 1 月 14 日):
var myDate=new Date();
myDate.setFullYear(2010,0,14);
在下面的例子中,我们将日期对象设置为 5 天后的日期:
var myDate=new Date();
myDate.setDate(myDate.getDate()+5);
注意: 如果增加天数会改变月份或者年份,那么日期对象会自动完成这种转换。
两个日期比较
日期对象也可用于比较两个日期。
下面的代码将当前日期与 2100 年 1 月 14 日做了比较:
var x=new Date();
x.setFullYear(2100,0,14);
var today = new Date();
if (x>today)
alert("今天是2100年1月14日之前");
else
alert("今天是2100年1月14日之后");
使用 getFullYear() 获取年份。
<p id="demo">点击按钮获取今年的年份。</p>
<button onclick="myFunction()">点我</button>
<script>
function myFunction()
var d = new Date();
var x = document.getElementById("demo");
x.innerHTML=d.getFullYear();
getTime() 返回从 1970 年 1 月 1 日至今的毫秒数。
<p id="demo">单击按钮显示1970年1月1号至今的毫秒数。</p>
<button onclick="myFunction()">点我</button>
<script>
function myFunction()
var d = new Date();
var x = document.getElementById("demo");
x.innerHTML=d.getTime();
如何使用 setFullYear() 设置具体的日期.
<p id="demo">单击按钮显示修改后的年月日。</p>
<button onclick="myFunction()">点我</button>
<script>
function myFunction()
var d = new Date();
d.setFullYear(2020,10,3);
var x = document.getElementById("demo");
x.innerHTML=d;
</script>
如何使用 toUTCString() 将当日的日期(根据 UTC)转换为字符串。
<p id="demo">点击按钮把 utc 日期和时间转换成字符串。</p>
<button onclick="myFunction()">点我</button>
<script>
function myFunction()
var d = new Date();
var x = document.getElementById("demo");
x.innerHTML=d.toUTCString();
如何使用 getDay() 和数组来显示星期,而不仅仅是数字。
<p id="demo">单击按钮显示今天周几</p>
<button onclick="myFunction()">点我</button>
<script>
function myFunction()
var d = new Date();
var weekday=new Array(7);
weekday[0]="周日";
weekday[1]="周一";
weekday[2]="周二";
weekday[3]="周三";
weekday[4]="周四";
weekday[5]="周五";
weekday[6]="周六";
var x = document.getElementById("demo");
x.innerHTML=weekday[d.getDay()];
如何在网页上显示一个钟表。
function startTime()
var today=new Date();
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();// 在小于10的数字前加一个‘0’
m=checkTime(m);
s=checkTime(s);
document.getElementById('txt').innerHTML=h+":"+m+":"+s;
t=setTimeout(function()startTime(),500);
function checkTime(i)
if (i<10)
i="0" + i;
return i;
以上是关于36.一文讲透JavaScript日期对象Date,时间戳1970date方法date计算的主要内容,如果未能解决你的问题,请参考以下文章