JS new Date()(获取当天、最近某段时间起止时间戳)

本文详细介绍前端开发中日期处理的各种技巧,包括获取特定时间点的时间戳、格式化日期、计算时间间隔及修改日期等核心功能。文章还展示了如何利用Date对象及其方法来获取当前的年、月、日、时、分、秒等信息。
获取任意一天0点和24点时间戳
function getTimeStamp(dayNum: number, isStart: boolean = true) {
  if (isStart) return new Date(new Date().setDate(new Date().getDate() - (dayNum - 1))).setHours(0,0,0,0);
  return new Date(new Date().setDate(new Date().getDate() - (dayNum - 1))).setHours(23, 59, 59, 999);
}
前端常见的日期的几种格式
const time = new Date();
console.log(time);						// Thu Jan 13 2022 10:15:19 GMT+0800 (中国标准时间)
console.log(time.toDateString());		// Thu Jan 13 2022
console.log(time.toTimeString());		// 10:15:19 GMT+0800 (中国标准时间)
console.log(time.toJSON());				// 2022-01-13T02:15:19.648Z
console.log(time.toISOString());		// 2022-01-13T02:15:19.648Z
console.log(time.toLocaleDateString());	// 2022/1/13
console.log(time.toLocaleString());		// 2022/1/13 上午10:15:19
console.log(time.toLocaleTimeString());	// 上午10:15:19
console.log(time.toString());			// Thu Jan 13 2022 10:15:19 GMT+0800 (中国标准时间)
console.log(time.getTime());			// 1642040119648
console.log(time.valueOf());			// 1642040119648

// 使用Date.UTC方法创建日期对象
//  参数: f(year, month, ?date, ?hours, ?monutes, ?seconds, ?ms)
// 返回 1970 年 1 月 1 日 到指定日期的毫秒数
const time2 = Date.UTC(2019,12,18);
获取当天、最近七天、最近一月、最近 一季度起止时间戳
const nowTime = new Date();
const todayStart = new Date(nowTime.toDateString()).getTime();
const todayEnd = new Date(nowTime.toDateString()).getTime() + 3600 * 1000 * 24 - 1;
const lastWeek = nowTime.getTime() - 3600 * 1000 * 24 * 7;
const lastMonth = nowTime.getTime() - 3600 * 1000 * 24 * 30;
const lastThreeMonth = nowTime.getTime() - 3600 * 1000 * 24 * 90;
计算两个时间点的间隔
var str = '2018-07-01T00:00:00.000Z'
var d1 = new Date(str)	//	时间点1,字符串转为日期对象
var d2 = new Date()		//	时间点2
var a = d2.getTime() - d1.getTime()

//	一般会用到定时器刷新时间(在合适地方进行定时刷新)
var timer = setInterval(function(){
	console.log(new Date())
},2000)
//	清除定时器
clearInterval(timer)
前端获取当前年份、月份等等
const d = new Date();
console.log(d.getFullYear())		//  2022
console.log(d.getMonth())			//  0 (0-11、0是一月)
console.log(d.getDate())			//  13 (1-31)
console.log(d.getDay())				//  4 (0-6、0是周日)
console.log(d.getHours())			//  10
console.log(d.getMinutes())			//  40
console.log(d.getSeconds())			//  53
console.log(d.getMilliseconds())	//  900 (0-999)

console.log(d.getTimezoneOffset())	// -480(本地时间与格林威治标准时间 (GMT) 的分钟差)
console.log(d.getUTCFullYear())		//  2022
console.log(d.getUTCMonth())		//  0 (0-11、0是一月)
console.log(d.getUTCDate())			//  13 (1-31)
console.log(d.getUTCDay())			//  4 (0-6、0是周日)
console.log(d.getUTCHours())		//  2
console.log(d.getUTCMinutes())		//  49
console.log(d.getUTCSeconds())		//  56
console.log(d.getUTCMilliseconds())	//  556 (0-999)
修改时间
const d = new Date();
d.setFullYear(2050)
d.setMonth(0)				// (0-11)
d.setDate(13)				// d.setDate(60)   // 超过30天月份会自动折算
d.setHours(10)
d.setMinutes(50)
d.setSeconds(50)			// (0-59)
d.setMilliseconds(800)		// (0-999)
d.setTime(1649286122272)	// 毫秒时间戳

// 格林威治不再赘述	d.setUTCxxx()
### 获取UTC时间戳JavaScript中,时间戳通常是指从1970年1月1日00:00:00 UTC到指定时间的毫秒数。可以使用以下几种方法获取当前UTC时间时间戳: - **使用`Date.now()`方法**:该方法直接返回当前时间距离Unix纪元(1970年1月1日00:00:00 UTC)的毫秒数。 ```javascript var utcTimestampMs = Date.now(); console.log(utcTimestampMs); ``` - **使用`+ new Date()`**:通过一元运算符`+`将`Date`对象转换为数值,即毫秒级时间戳。 ```javascript var utcTimestampMs = +new Date(); console.log(utcTimestampMs); ``` - **使用`valueOf()`方法**:`new Date().valueOf()`同样返回当前时间的毫秒数。 ```javascript var utcTimestampMs = new Date().valueOf(); console.log(utcTimestampMs); ``` - **使用`getTime()`方法**:`new Date().getTime()`也是获取毫秒级时间戳的常用方法。 ```javascript var utcTimestampMs = new Date().getTime(); console.log(utcTimestampMs); ``` ### 获取北京时间(UTC+8)时间戳 北京时间是UTC+8时区的时间。由于JavaScript时间戳是基于UTC的,获取北京时间时间戳本质上也是获取当前时间时间戳,但可以明确指定时区来获取对应时间戳。 ```javascript // 获取当前时间戳 var currentTimestampMs = Date.now(); // 假设要获取北京时间2024-06-01 00:00:00的时间戳 var beijingDate = new Date('2024-06-01T00:00:00+08:00'); var beijingTimestampMs = beijingDate.getTime(); console.log(beijingTimestampMs); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值