创建对象
方式一
let date:Date = new Date()
方式二
let date:Date = new Date("2023-10-24 05:20:00")
方式三
注意:月份是 0-11,所以实际月份要-1
let date:Date = new Date(2023,9,24,5,20,0)
案例
通过调用 get() 方法,可以获取年月日
<script>
let date:Date = new Date();
console.log("年:"+date.getFullYear()); //获取完整的年份(4位,1970-????)
console.log("月:"+date.getMonth()); //获取当前月份(0-11,0代表1月)
console.log("日:"+date.getDate()); //获取当前日(1-31)
console.log("星期:"+date.getDay()); //获取当前星期X(0-6,0代表星期天)
console.log("时:"+date.getHours()); //获取当前小时数(0-23)
console.log("分:"+date.getMinutes()); //获取当前分钟数(0-59)
console.log("秒:"+date.getSeconds()); //获取当前秒数(0-59)
</script>
执行结果如下:
年:2022
月:0
日:18
星期:2
时:22
分:45
秒:40
封装函数
js中的Date不想java的Date,可以格式化输出,需要自行实现
/* 返回当前时间,格式:yyyy-MM-dd HH:mm:ss */
function now(){
let date:Date = new Date();
var year = date.getFullYear()
var month = date.getMonth() + 1 // 月份从0开始
var day = date.getDate()
var h = date.getHours()
var m = date.getMinutes()
var s = date.getSeconds()
var time = year +"-"+fillZero(month)+"-"+fillZero(day)+" "+fillZero(h)+":"+fillZero(m)+":"+fillZero(s)
return time
}
// 返回星期一、星期二、星期日
function week(){
var weeks = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六']
var week = date.getDay() // 获取星期,0是星期日
// if(week == 0){
// return "星期日"
// }else if(week == 1){
// return "星期一"
// }
return weeks[week]
}
测试:
console.log("当前时间:",now())
console.log("星期:",week())
获取其他值
<script>
let date:Date = new Date();
//获取当前时间距离1970.1.1 00:00:00 的毫秒数
console.log("距离1970.1.1的毫秒数:"+date.getTime());
console.log("毫秒:"+date.getMilliseconds()); //获取当前毫秒数(0-999)
console.log("日期:"+date.toLocaleDateString()); //获取当前日期
console.log("时间:"+date.toLocaleTimeString( )); //获取日期与时间
console.log("日期时间:"+date.toLocaleString( )); //获取日期与时间
</script>
执行结果如下:
当前时间(从1970.1.1开始的毫秒数):1642517140592
毫秒:592
日期:2022/1/18
日期时间:2022/1/18 下午10:45:40
时间的本质
getTime()
let date:Date = new Date();
console.log("距离1970-1-1 00:00:00 的毫秒数:",date.getTime())
console.log("距离1970-1-1 00:00:00 的年数:",date.getTime() / 1000 / 60/60/24/365)
案例-朋友圈发布时间
/*
* 朋友圈发布时间,
d = 当前时间 – 发布时间 (需要用到毫秒数)
当 d 小于3分钟显示刚刚
当 d 小于60分钟显示 xx分钟前
当 d 小于24小时显示 xx小时前
。。。。。
其它:显示 yyyy-MM-dd HH:mm
*/
var currentTime = Date.now() // new Date().getTime()
// 假设发布时间是:2023-10-26 08:18
/*
* 需要将发布时间转成 相应的毫秒数
*
* 1. 创建Date对象,需要设置年月日时分秒
* 2. 获取毫秒数
*/
// var releaseDate = new Date("2023-10-24 05:20:00")
console.log("Date.now():",Date.now())
// 注意:实际月份要-1,因为此种方式创建对象时,月份会自动+1
// var releaseDate = new Date(2023,9,24,5,20,0)
var releaseDate = new Date()
releaseDate.setFullYear(2023)
releaseDate.setMonth(9)
releaseDate.setDate(24)
releaseDate.setHours(5)
releaseDate.setMinutes(20)
releaseDate.setSeconds(0)
console.log("releaseDate:",releaseDate)
var releaseTime = Date.parse("2023-10-24 05:20:00") //releaseDate.getTime()
// console.log("发布时间对象:",releaseTime)
// 换算成分钟
var diff = (currentTime - releaseTime)/1000/60
console.log("diff:",diff)
if(diff < 3){ // 小于 3分钟
console.log("刚刚")
}else if(diff < 60){ // 小于60分钟
console.log( Math.ceil (diff) +"分钟前")
}else if( diff/60 < 24){ // 小于24小时
console.log( Math.ceil( diff/60 ) + "小时前" )
}else{
var dis = releaseDate.getFullYear()+
"-"+ (releaseDate.getMonth() + 1 )+
"-"+releaseDate.getDate()+
" "+releaseDate.getHours()+
":"+releaseDate.getMinutes()
console.log(dis)
}
set 方法
setDate()
注意:超过了该月份应有的天数,则增加月份。
例子:如果当前是2月,如果 setDate(30),月份就会加1
setMonth()
设置月份
注意:设置月份后,如果超过了该月份应有的天数,则增加月份。
例子:如果当前是8月31日,如果 setDate(8) ,即:设置为9月,那么就是9月31日,由于9月最后一天是30日,所以月份就会加1,即:10月1日
解决:
先设置天数、再设置月份
var endDate = new Date() // 结束的时间对象
endDate.setDate(1) // 当前是8月31日,先设置为8月1日
endDate.setMonth(8) // 然后再设置为 9月1日
静态方法
返回系统当前时间距离 1970-1-1 00:00:00 的毫秒数
Date.now()
传入时间(格式:yyyy/mm/dd hh),返回该时间距离
ss1970-1-1 00:00:00 的毫秒数
Date.parse('2012/12/01 16:07:32')
